$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_URL, '2.php');
//curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_exec($ch);
curl_close($ch);
echo '1-ok';sleep(10);
echo '2-ok';
exec('/usr/bin/php 2.php > /dev/null 2>&1 &');
$ whereis php
php: /usr/bin/php /etc/php /opt/php56/bin/php /opt/php74/bin/php /opt/php73/bin/php /opt/php83/bin/php /opt/php71/bin/php /opt/php53/bin/php /opt/php82/bin/php /opt/php72/bin/php /opt/php80/bin/php /opt/php81/bin/php /opt/php54/bin/php
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);Я знаю, что PHP - очень плохой дирижер в асинхронщине.
Мне лично интересно, чем плох вариант c функциями curl_multi_*?
Мне гугл это подсовывает на запрос "curl php асинхронный вызов".
$ch = curl_init('https://example.com/test');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode(['event' => 'test']),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => false, // не ждать тело ответа
CURLOPT_TIMEOUT_MS => 1, // 1 мс
CURLOPT_CONNECTTIMEOUT_MS => 1,
]);
curl_exec($ch);
curl_close($ch);$mh = curl_multi_init();
$ch = curl_init('https://example.com/test');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode(['event' => 'test']),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => false,
]);
curl_multi_add_handle($mh, $ch);
// Запускаем, но не ждём
curl_multi_exec($mh, $running);
// Сразу закрываем
curl_multi_remove_handle($mh, $ch);
curl_multi_close($mh);
curl_close($ch);