连续创建1000多个职位导致404?

时间:2013-09-20 作者:anlogg

我正在开发一个大宗进口商。它基本上是把图像转换成帖子。每个图像将创建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?

1 个回复
SO网友:kaiser

我为海关进口商所做的:

在“管理”中添加一个专用菜单页,逐步处理它并在其间进行回音使用sleep() 每次导入后

结束

相关推荐

使用GET_POSTS获取自定义字段数据,但使用一个数组

我在WordPress中运行了一个get\\u posts查询,需要提取一对自定义字段并将它们全部放入一个数组中。get\\u posts查询提供了一个post数组,但当我使用foreach访问自定义字段时,最终会为每个结果提供单独的数组。The Query$c_query = get_posts( array( \'post_type\' => \'page\',