我正在开发一个大宗进口商。它基本上是把图像转换成帖子。每个图像将创建10个不同的相关帖子,因此每个图像将代表/创建11个帖子。如果我导入100幅图像,插件将不得不连续创建1100篇帖子。问题是Wordpress抛出404 error
插件创建帖子时在控制台中。下面是确切的错误:
Failed to load resource: the server responded with a status of 404 (Not Found) http://www.example.com/wp-admin/admin-ajax.php
错误日志显示:
WordPress database error MySQL server has gone away for query ...
插件通过先上传图像,然后再创建帖子来完成导入。在创建帖子时抛出错误。
重要的是要注意,如果导入的图像少于20个,则不会发生错误。
由于这是AJAX,我没有其他错误数据可以帮助我诊断问题。但我猜服务器在被要求创建帖子时不知何故会在某个点停止。有什么想法吗?
编辑:根据@kaiser的要求,以下是为每个图像创建帖子的函数:
public function create( $posted ) {
$post_ids = array();
foreach ( $posted[\'attachments\'] as $file_id ) {
$file_data = $this->get_file( $file_id );
$post = array(
\'post_title\' => $posted[\'titles\'][$file_id] ? $posted[\'titles\'][$file_id] : $file_data[\'name\'],
\'post_content\' => \'\',
\'post_type\' => \'xxx\',
\'post_status\' => \'publish\',
\'post_author\' => get_current_user_id(),
\'tax_input\' => array(
\'xxx_type\' => array( post_type_term_id() ),
\'xxx_cat\' => array( $posted[\'term_id\'] )
)
);
// Create post
$post_id = wp_insert_post( $post );
$post_ids[] = $post_id;
// Form post metadata
$metadata = xxx_metadata_defaults();
// Attach event date to this post
$metadata[ \'event_date_meta_key\' ] = date( \'Y-m-d H:i:s\', strtotime( $posted[\'date\'] ) );
// Add meta that determines if this post is imported by this plugin
$metadata[\'xxx\'] = \'yes\';
// Record attachment id for later use
$metadata[\'xxx_id\'] = $file_id;
// Update metadata
foreach ( $metadata as $key => $value ) {
update_post_meta( $post_id, $key, $value );
}
// Set file as the post thumbnail for the post
set_post_thumbnail( $post_id, $file_id );
// Create related
$this->create_related( $posted[\'group\'], $post_id, $file_data );
do_action( \'create_related_posts_complete\', $post_id, $posted[\'term_id\'], $posted[\'users\'] );
}
return $post_ids;
}
下面的一行创建了另外10个帖子。
// Create related
$this->create_related( $posted[\'group\'], $post_id, $file_data );
我不知道如何拆分查询,因为所有文件都是从表单中提取出来的,并且一次创建为帖子,所以我可能不得不使用
sleep()
正如@kaiser建议的那样。但是我应该分配多少时间睡觉呢?这取决于
php.ini
配置--
max_execution_time
?