我正在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_metadata
WP 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'
);
$image_id = wp_insert_attachment($attachment, $images[$i], $post_id);
$image_data = wp_generate_attachment_metadata($image_id, $images[$i]);
wp_update_attachment_metadata($image_id, $image_data);
}
guid
我的失踪之处。我会将其添加到我的代码中,然后重试,并告诉您是否可以解决问题。