У меня есть сценарий AJAX, который занимает около 10 минут, чтобы сделать это. Я хотел бы сказать пользователю: «Слушайте, задача завершается, мы сообщим вам, как это получается», но она не позволит пользователю запускать какие-либо другие скрипты на сервере до тех пор, пока этот завершает (я считаю, что это следствие того, что PHP является однопоточным, но я не уверен). Есть ли способ назначить этот сценарий AJAX отдельному процессу PHP или Apache, чтобы пользователь мог продолжать щелкнуть в приложении, не дожидаясь завершения задачи?
Вы можете использовать базу данных или файлы, чтобы вставить механизм блокировки, чтобы задача не запускалась несколько раз одновременно. Затем вам нужно просто запустить процесс PHP с помощью команды nohup
(не повесить трубку), для более подробной информации смотрите эту статью: https://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in -php / или этот вопрос: nohup: запустить PHP-процесс в фоновом режиме .
Я ищу часами, по крайней мере, решение было очень легко для меня использовать Cron Jobs . В cPanel вы можете перейти в Advanced -> Cron Jobs и планировать задачу с помощью PHP-скрипта в командной строке.
Пример команды, выполняющий скрипт php:
/usr/bin/wget http://www.example.com/miscript.php
или лучше:
php /home/USER/public_html/miscript.php