У меня есть две спокойные конечные точки api; DispatchJob_Public.php и selectDriverForJobResult.php, и мне нужно вызвать selectDriverForJobResult.php из DispatchJob_Public.php после пара минут. Как я могу сделать это без с помощью спать()? Потому что я не могу позволить себе перевести сервер в режим ожидания (из-за функции сна).
Я написал функцию на javascript и ajax для вызова второго файла (selectDriverForJobResult.php), и она отлично работает, когда я попадаю в конечную точку непосредственно из браузера, но js не работает, когда файл вызывается из андроид или почтальон.
Поэтому мне нужно решение для этого, функции не включает в себяcron работа, javascript и спать().
Большое спасибо.
Кроме того, если вам не нужно решение cron job, удалите теги из своего вопроса.
@ vivek_23, потому что второй файл будет собирать данные о драйверах, которые будут делать ставки в эти две секунды. Так что нужен двухминутный перерыв.
Единственный лучший вариант, который я вижу здесь для вас, - это реализовать систему очередей, которая на самом деле будет зависеть от задания cron, запускающего их за вас. Постоянное выполнение задания cron с файлом и проверка таблицы базы данных на предмет наличия каких-либо заданий в очереди, которые необходимо запустить. Другой вариант - если вы используете php как PHP-FPM, а не как модуль apache. Тогда вы можете узнать больше о: php.net/manual/en/function.fastcgi-finish-request.php
Очередь @OleHaugset приемлема, но cronjob мне здесь не поможет. Дело в том, как передать параметры в cronjob для проверки того, полны ли две минуты или нет? Во-вторых, я запускаю php как CGI / FastCGI. Но я не могу запустить функцию fastcgi_finish_request (). Вы можете порекомендовать мне подробную документацию по этой функции?






прямо с php, нет возможности
вы можете написать файл bash и выполнить его с помощью системы
startBatch.sh
sleep 2m
php /path/fo/file.php
в вашем первом файле
system('./startBatch.sh >> null');
Если программа запускается с этой функцией, чтобы она продолжала работать в фоновом режиме, вывод программы должен быть перенаправлен в файл или другой поток вывода. В противном случае PHP зависнет до завершения выполнения программы.
Да, @OleHaugset, это верно, и я не могу использовать сон, потому что, если бы было, скажем, 100 запросов за одну минуту? Система не сможет обработать ни один из них, если я сплю.
@OleHaugset исправил
Можете ли вы объяснить, почему возник разрыв
two minutes?