Необходимо сделать этот блок кода асинхронным с остальным кодом. Собирается собирать посты wp и отправлять запрос на мой URL. Плагин должен работать асинхронно и не мешать работе сайта WordPress.
for ($x=0; $x<=n; $x++) {
$data = posts[$x];
$ch = curl_init('http://myurl.com/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'ACCEPT: application/json',
'Content-Length: ' . strlen($data))
);
$result = curl_exec($ch);
curl_close($ch);
}
Правильный способ обработки асинхронных запросов в WordPress — использовать WP-Cron для планирования события. Вы можете запланировать его запуск один раз или с интервалом. Смотрите некоторые инструкции по настройке Вот. Две основные функции для проверки являются wp_schedule_event()
а также wp_schedule_single_event()
.
Однако следует помнить одну вещь: поскольку ваш код выполняется только при наличии запроса, при малом трафике, возможно, запланированное событие не будет выполняться, как ожидается. Я написал на своем сайте статью о том, как вы можете использовать crontab в сочетании с WP-Cron для более точного планирования событий: http://justinsilver.com/technology/wordpress/disable-wp-cron-wordpress/.
использование Пакет жрет, Пример кода:
$request = $client->createRequest('GET', ['future' => true]);
$client->send($request)->then(function ($response) {
echo 'Got a response! ' . $response;
});
Посмотри как ты можешь установить его. Также проверьте RingPHP и будущие ответы для некоторой дополнительной информации. На самом деле RingPHP используется в качестве уровня обработчика в Guzzle
и внизу Реагировать / Promise дает Promises/A
Поддержка для PHP
,