Есть сайт на WordPress, на нем стоит WP All Export
Две функции добавлены плагином в один файл:
1) запускает экспорт по хуку woocommerce_thankyou (пробовала также woocommerce_new_order)
2) запускается после экспорта по хуку - делает проверку на "единичный запуск" ( и ...этот код я не добавила чтоб не захламлять....делит файл на части и отправляет по sftp )
Сейчас в обе функции я добавила (Код для ожидания "мусор")
<?php
function split_orders() {
$lockFile = __FILE__.'.lock';
$hasFile = file_exists($lockFile);
$lockFp = fopen($lockFile, 'w');
// Если блокировку получить не удалось, значит второй скрипт еще работает
if (!flock($lockFp, LOCK_EX | LOCK_NB)) {
die('Sorry, one more script is running.');
}
// Если файл блокировки уже существовал, но не был залочен,
// значит предыдущий запуск завершился некорректно
if ($hasFile) {
echo 'The previous running has been completed with an error.';
}
// Все в порядке, блокировка lock получен
// По окончании работы необходимо снять блокировку и удалить файл
register_shutdown_function(function() use ($lockFp, $lockFile) {
flock($lockFp, LOCK_UN);
unlink($lockFile);
});
// Код для ожидания "мусор"
$i=1;
for($i=1; $i<6; $i++) {
$i;
sleep(10);
}
}
add_action('pmxe_after_export', 'split_orders', 11 );
function start_export_orders() {
// Код для ожидания "мусор"
$i=1;
for($i=1; $i<6; $i++) {
$i;
sleep(10);
}
// -- Change these to match your cron URLs
$trigger_url = "http://example.com/wp-cron.php?import_key=A.y8AICS&import_id=68&action=trigger";
$execution_url = "http://example.com/wp-cron.php?import_key=A.y8AICS&import_id=68&action=processing";
// -- Request trigger URL
$json = json_decode(file_get_contents($trigger_url));
// Example of possible responses from trigger request:
// {"status":200,"message":"#68 Cron job triggered."}
// {"status":403,"message":"Import #68 already triggered. Request skipped."}
if (!is_object($json) || !in_array($json->status,array(200))) {
die("Error in triggering export <br>".PHP_EOL);
}
$step = 1;
do {
// -- Adjust this as needed (or allowed) by your server
set_time_limit(300);
// -- Request execution/processing URL
$json = json_decode(file_get_contents($execution_url));
// Example of possible responses from execution/processing request:
// {"status":200,"message":"Records Processed 10. Records imported 10 of 30."}
// {"status":200,"message":"Records Processed 10. Records imported 20 of 30."}
// {"status":200,"message":"Import #68 complete"}
// {"status":403,"message":"Import #68 is not triggered. Request skipped."}
} while (is_object($json) && $json->status === 200);
}
add_action('woocommerce_thankyou', 'start_export_orders', 10 );
При оформлении нового заказа страница зависает пока не выполнится весь скрипт...
Помогите сделать чтобы он выполнялся на фоне и не беспокоил пользователя "бесконечной загрузкой страницы" так как весь этот процесс может занять длительное время..