У меня есть php-файл, который извлекает некоторые данные из внешних API, и я хочу запланировать его делать каждые несколько часов (или каждые несколько дней). Некоторые googleing привели меня к «запланированным задачам», но, похоже, мне нужно запустить собственный сервер, чтобы это сделать?
До сих пор все PHP и MySQL, которые я делал, были очень простым заполнением формы, поэтому я немного потерялся. Нужно ли мне превращать компьютер в сервер, чтобы сделать это, или я должен посмотреть на хосты, которые позволяют запускать скрипты? Я не совсем уверен, что я ищу.
Боковой вопрос: как я мог бы предотвратить, чтобы кто-то еще не запускал PHP-скрипт (из-за чего выполнялось множество вызовов API)?
Как вы теперь запускаете скрипт? Windows или Linux? Linux без проблем с cron: на сервере с поддержкой PHP просто отбросьте скрипт PHP где-нибудь, отредактируйте crontab и пройдите!
Ex. на каждые 2 часа
0 */2 * * * /usr/local/bin/php /path/to/script.php
Редактировать Re: Mac
startd, по-видимому, является предпочтительным методом для запуска запланированных задач, но я понимаю, что OS X имеет возможности cron, а также производную UNIX.
Если у вас достаточно загруженный веб-сервер, вы можете просто проверять каждый раз, сколько времени прошло с момента последнего запуска скрипта. Если более двух часов, запустите его.
Просто убедитесь, что вы обновили время и запустили сценарий атомарно, чтобы не запускать несколько копий сценария. Вы можете сделать это с помощью файла, который содержит последний раз, когда скрипт был запущен, который вы блокируете , проверяя и обновляя его.
cronjobs созданы для этого … Вы можете проверить работу Cron в cpanel. Я предполагаю, что ваш сайт запущен в среде Linu
http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/
Вы можете найти гораздо больше информации об фоновом процессе
http://www.fijiwebdesign.com/blog/create-a-background-process-on-the-server-with-php.html