Questions tagged «memory»

8
重构Wordpress以提高内存性能
我仔细查看了Wordpress的内存消耗。在我的网站上,似乎为每个页面命中分配了20MB的RAM,只是为了为所有插件的运行准备一个舒适的环境。因此,我对它进行了绘制: 没有一个地方可以优化,没有一个坏家伙会消耗大部分的内存。消费分布在许多许多php模块中。 我们如何才能使Wordpress仅在内存中初始化其环境一次,然后为每次命中多次重复使用它?我不想让缓慢的PHP在每次用户单击时都占用20 MB的空间-即使在具有大量内存的服务器上,也要花费数秒钟才能完成所有工作。基本上,您将需要可重用的只读内存块。 还有...为什么20MB?谁能提供对此的见解? 编辑:这是在我的开发计算机上运行的Wordpress上的WinCacheGrind输出(比共享主机快得多)。如您所见,仅花费一秒钟的时间就可以生成主页的HTML。通过共享主机降低速度,您会遇到麻烦。我选择了大部分时间使用的方法。您将如何进行优化? 编辑:这是此出色的functions.php分析工具的查询统计信息。 负载:12个查询-532ms-19.1MB-43次缓存命中/ 53 查询:15个查询-563ms-19.0MB-72个高速缓存命中次数/ 86 显示:21个查询-705毫秒-19.2MB-234个高速缓存匹配数/ 257 编辑:您是否想看到某些保证会吓到您的东西?将这些行插入index.php的末尾: echo "<pre>\n"; print_r(get_defined_vars()); echo "</pre>\n"; 我试图计算当前帖子的正文存储在内存中的次数。我计算了20个实例。然后我意识到PHP具有引用计数,因此副本的数量减少到只有三个:两个似乎在WP_Query中,一个在对象缓存中。我正在进一步调查。 这就是为什么我认为WordPress需要针对内存问题进行重构的原因。您再也不能将其内存消耗归咎于其功能的复杂性。它只是做错了很多事情。 编辑:经过一天的努力,这是我的发现: 1)88%的内存来自require或include或include_once调用类型: 2)php文件包含的内容大部分发生在服务请求的第一部分(并不奇怪),这也是消耗所有内存的地方: 3)绘制请求期间正在执行的所有功能非常有趣。共有12000多个电话。我将它们抖动以使其更加可见(“ Level”轴基本上是堆栈的深度): 4)我能想到的唯一方法是最大程度地减少包含的.php文件的数量。如果我将每个文件的功能分开,则可以看到许多文件最多被命中一次或两次。我们需要一种在不需要它们时如何跳过它们的方法。例如,我的远程数据库备份插件已加载并注册,根本就从未使用过。这是上面的图,按文件名分割: 我提供的赏金值得我所有声誉:)的重构,这将使我的博客内存占用减少30%或更多。 编辑:我安装了WP 3.1,这是与旧版本的比较。 蓝色是WP 3.1,红色是3.0.4。新的WP更快,​​但也占用更多内存。 这是包含文件的列表。 这让我意识到“ All In One SEO包”消耗了多少内存-一种途径是仅使用插件功能的一小部分来获取我想要的东西。另外,我自己的插件似乎还不错。 我想尝试对有条件加载,例如comment.php(我不允许在博客上发表评论)和其他几个条件。我删除了所有不推荐使用的代码。我整理了kses.php以仅按需加载其全局表。我简化了l10n(我不进行本地化),使它的函数立即返回字符串,而无需查找。我距离我随意设置的30%的目标还差得很远。 编辑:我下载并启用了APC的默认设置(操作码缓存为32MB)。比较如下: 您会看到代码加载速度大大加快,并且代码占用的内存也更少(可能是因为我们只处理操作码,而不是原始源代码)。但是,内存消耗仍然很高。

1
如何配置WordPress处理75,000个页面?
我有一个使用WordPress的大型网站。到目前为止,我们网站上有75,000页,并且在前端效果良好。 问题是,如果我们团队中的任何人触摸页面编辑器(wp-admin / edit.php?post_type = page),Apache就会耗尽服务器上的所有内存。 我尝试禁用所有插件,但这没有用。我还尝试了在我们的实时服务器上调试,该服务器上有一个4GB的盒子……它仍然会耗尽所有内存并引起麻烦。 在此安装中,我们还有20,000个帖子。在wp-admin中加载这些文件没有问题。也许我们应该将所有页面都移到帖子上,但这将导致永久链接结构出现问题。 是否有大型WP网站缺少的特殊设置或配置?
12 pages  memory  scale 

2
WP_Query泄漏荒谬的内存量
每当我在下面的函数中调用WP_Query()时,Wordpress就会泄漏8兆的内存。而且,由于我多次调用此函数,所以事情很快就变得很毛茸茸了……:(我尝试取消生成的$ queryObject以及定期调用wp​​_cache_flush(),但似乎都没有任何效果。 function get_post_ids_in_taxonomies($taxonomies, &$terms=array()) { $post_ids = array(); $query = gen_query_get_posts_in_taxonomies($taxonomies, $terms); // var_dump($query); //Perform the query $queryObject = new WP_Query($query); //*****THE 8 MEGABYTES IS LEAKED HERE***** //For all posts found... if($queryObject->have_posts()) { while($queryObject->have_posts()) { $queryObject->the_post(); //Get the $post_id by capturing the output of the_ID() ob_start(); the_ID(); $post_id = …

6
如何在管理员中使用超过256MB的内存?
我正在为摄影师创建一个网站,该摄影师上传的照片通常对于当今的数码相机来说是很大的。图像占用大量内存,尤其是诸如创建缩略图之类的图像操作。 因此,我想将管理员的内存限制提高到256MB以上-如何做到这一点?我允许CGI和PHP最多使用1 GB,但是wordpress总是将内存减少到256MB。知道如何在需要自动更新的客户端上解决此问题吗? 更新: 从Wordpress 3.2开始,Wordpress中的最大内存限制将再次可配置。

4
有没有一种方法可以从post变量中排除内容以节省RAM使用量?
因此,我遇到了看起来像WP RAM使用问题的问题,并且正在寻找解决方案。 我在网站上真正遇到这个问题的唯一地方是我尝试填充的“网站地图”页面,但是可以普遍应用此问题的解决方案,并节省整个网站的RAM使用率。 从本质上讲,这个网站地图页面我是所有人的名单posts,并pages在我的网站。我需要在此页面上访问的$ post变量的唯一元素是标题和永久链接。不幸的是,我正在使用的查询返回所有帖子,以及每个$ post变量中的所有信息。 以下是我在此站点地图页面上使用的一个查询示例,该查询custom-post-type具有一个自定义分类法“补充”和术语“所有补充” 的单个“产品”。我的站点地图页面具有多个此类查询,但出于解释目的,我仅包含此单个查询的代码。 $varArray= array( 'post_type' => 'products', 'post_status' => 'publish', 'supplements' => 'all-supplements', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC' ); $myProducts= new WP_Query($varArray); $ post变量中保存的绝大多数信息(对于我的网站,我想这个趋势通常用于通用)在“内容”中找到。我的“站点地图”页面的典型RAM使用量约为140MB (由Debug Bar报告),而我网站上任何其他典型页面的使用量为50-60MB。很大的区别。昨天,“站点地图”页面停止工作(WSOD),要解决此问题,我不得不增加WP可以使用的最大RAM量。因此,由于只有一页,因此我增加了总体必要的系统资源。 因此,我提出了问题。 有没有在WordPress的路径/选项的地方,我的思念,将获取posts/ pages像一个正常的查询,但不获取检索到的帖子的内容? 或者,是否有一种更简单的方法让我仅获取给定查询(标题/ Permaklink / Slug / etc ...)中的特定元素,而不是获取整个$ post变量shebang? 在我看来,对于许多WP应用,唯一的地方,通常会需要后/页的“内容”是对page或post页面(当然这里也有例外),并有机会获得职位的全部内容通过其他页面上的查询检索到的/ pages是简单的矫kill过正。如果有一种方法可以避免加载列表列表页面的全部内容,则可以节省大量的RAM使用量。 任何帮助,将不胜感激。

1
使用wp_generate_attachment_metadata将图像以编程方式添加到媒体库中的操作随机失败
我正在LAMP服务器(共享主机)上使用PHP 5.6.12运行最新的WordPress版本(4.6)。 我想编程方式添加10幅图像,使用FTP的上传wp-uploads目录,到媒体库使用三个WordPress的功能wp_insert_attachment,wp_generate_attachment_metadata和wp_update_attachment_metadata。 我的问题: 有时,我的PHP脚本有效(将所有10个图像正确添加到媒体库中)-有时却不起作用(在10个图像中,仅添加了4、5、6个左右)!每个图像的大小为2M-4M。 到目前为止,我所做的是: 我通过php.ini启用了error_logging,发现每隔一段时间wp_generate_attachment_metadata就会失败(例如,在处理第5,第6,第7图像时),并且整个PHP脚本终止。除此之外,我没有从error_log()获得更多信息。由于我怀疑内存问题,因此将php的内存大小增加到120M(我的托管提供程序给我128M),并将脚本执行增加到100s(我的托管提供程序给我120s)。所有文件都存在(当然),它们都是PNG-就像我说的那样,使用同一组10张图像进行测试,它有时有效,有时却无效... 我的问题: wp_generate_attachment_metadataWP 4.6 是否存在已知问题?在我将网站从WP 4.3升级到4.6之前,一切工作正常。 如果没有足够的内存导致此问题,我该如何优化我的PHP脚本以处理Web托管程序给定的128M内存限制? 如何确定内存不足是否导致我的PHP脚本终止? 提前致谢! 这是我的代码: $post_id = 1234; $images = array('filename1.png', 'filename2.png', ... 'filename10.png'); for($i = 0; $i < 10; $i++) { $attachment = array( 'post_mime_type' => 'image/png', 'post_title' => 'my description', 'post_content' => 'my description', 'post_status' => 'inherit' …

3
剖析WordPress内存使用情况的理想方法是什么?
我们正在两台Rackspace Cloud服务器,一台Web和一个数据库上运行一个WordPress多站点实例,目前有30个左右的站点。我将Nginx放在静态资产的前面,而Apache处理所有动态请求。我还为数据库配置了Memcached,为PHP配置了APC操作代码缓存。默认情况下,我们拥有的所有站点都启用W3 Total Cache。 很快就解决了一个问题:Apache进程通常在80到120 MB之间。Web服务器有2 GB的内存,这意味着我需要15个左右的进程,直到一切变得混乱为止。流程显然不应该那么大,但是我对为什么如此感到困惑。 识别正在发生的事情的好策略是什么? 提前致谢! 更新10/2/10:对于那些想知道的人,内存问题的解决方案是禁用PHP xdebug(在配置中无意中启用了该功能,并导致随机内存使用量激增)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.