Intereting Posts
Перенаправление пользователя на страницу, когда нет содержимого? Почему ключевое слово WP_Query 's' => 'ищет только «post_title» и почему не «post_content»? Каков наилучший способ включения вложенных коротких кодов? Настройка меню управляющих вложений с помощью сортировки jQuery отображать специальные пользовательские поля Использование mediaelement для отображения галереи аудио Обновить фрагмент URL-адреса URL-адреса Canonical Permalink Как использовать образец кода в сообщении WordPress? Должен ли я использовать функции function_exists () и / или add_action () в разработке темы? Как перевести несколько установок на одну установку Multisite? Обновить мета-значение сообщения как разность дат между двумя полями Правило перезаписи никогда не совпадало Пользовательский $ wpdb возвращает неожиданные результаты по времени Как решить эту проблему с скриптом в каталоге тем? Ссылки на текстовые виджеты не работают

wp_insert_post массовый импорт 500 ошибок сервера

Я работаю над инструментом импорта WordPress, где я использую пользовательскую таблицу города в моей базе данных с долготой, широтой, которая объединяется с каким-то другим текстом, а затем импортируется с помощью wp_insert_post() . Это отлично работает, но после 3200 – 3600 сценарий останавливается, и я получаю 500 внутренних ошибок сервера.

Я испробовал несколько решений для решения этой проблемы:

Я увеличил следующие настройки php.ini:

  • max_input_time
  • max_execution_time
  • memory_limit
  • mysql.connect_timeout
  • max_input_time
  • post_max_size

Увеличенный WP_MEMORY_LIMIT – wp_config.php:

 define('WP_MEMORY_LIMIT', '128M'); 

И увеличил мой лимит времени в wp_config.php.

 set_time_limit(240); 

Пробовал это также с моим файлом htaccess:

 php_value max_execution_time 240 

Отладил мои ошибки, но у меня все еще есть ошибка 500.

Я связался с моим хозяином, и они сказали мне установить set_time_limit(); который я установил в function.php, в файле моего импортера и wp_config.php, но не удался.

Я просмотрел свои настройки php с помощью phpinfo(); и там у меня есть max_execution_time из 120. Я попросил мой хост увеличить его и по-прежнему та же проблема.

Это мой сценарий импорта:

 // Get results global $wpdb; $results = $wpdb->get_results( "SELECT * FROM stn_locations" ); if( $results ) { // Submit button clicked if( isset( $_POST['submit'] ) ) { foreach( $results as $result ) { // Set variables $location_name = $result->stnl_name; $location_longitude = $result->stnl_longitude; $location_latitude = $result->stnl_latitude; $location_country = $result->stnl_country; $location_term = $_POST['term']; // Content $location_content = $_POST['stn_filter_import_content']; $location_content = str_replace( '%%location%%', $location_name, $location_content ); $location_content = str_replace( '%%category%%', $location_term, $location_content ); // Build post_title $post_title = $location_term . ' ' . $location_name; if( $location_country == $_POST['country'] ) { // Import data $import_data = array( 'post_title' => $post_title, 'post_content' => $location_content, 'post_status' => 'publish', 'post_type' => 'filter', ); // Insert post $post_id = wp_insert_post( $import_data ); if( ! is_wp_error( $post_id ) ) { // Set Term wp_set_object_terms( $post_id, $location_term, 'service' ); // Set meta fields update_post_meta( $post_id, 'longitude', $location_longitude ); update_post_meta( $post_id, 'latitude', $location_latitude ); $success = true; } else { $error = true; } } } } } 

У кого-нибудь есть решение, подсказка, настройка или другая функция для меня? Дай мне знать! Спасибо.

Solutions Collecting From Web of "wp_insert_post массовый импорт 500 ошибок сервера"

Мой совет состоит в том, чтобы не делать много времени на массовых операциях над веб-соединением в первую очередь. PHP отлично работает из командной строки.

Напишите свой одноразовый скрипт, чтобы сделать все, что вам нужно, чтобы это сделать. Если вам нужен доступ к функциям WordPress в этом процессе, включите файл wp-load.php в начало скрипта.

Затем перейдите в приглашение оболочки на своем сервере и выполните «php yourscript.php», чтобы запустить его. В командной строке PHP нет ограничений времени выполнения, и это займет столько времени, сколько потребуется.