#php #curl
Вопрос:
Я изучаю php и хотел бы написать простой монитор форума, но я столкнулся с проблемой. Как написать скрипт, который регулярно загружает файл? Когда страница загружается, php выполняется только один раз, и если я помещу его в цикл, все это нужно будет запустить до завершения загрузки страницы. Но я хочу, скажем, загружать файл каждую минуту и делать уведомление на странице, когда файл изменяется. Как мне это сделать?
Комментарии:
1. Вы, вероятно, ищете приятелей 😉
2. @nikic Согласился. Я бы написал деймонов только в том случае, если время между выполнением должно быть меньше одной минуты. По моему опыту, это очень редко, и cron может легко с этим справиться.
Ответ №1:
Как правило, вы будете действовать в два этапа :
- Во-первых, у вас будет PHP-скрипт, который будет запускаться каждую минуту-с помощью crontab
- Этот скрипт выполнит тяжелую работу : загрузит и проанализирует страницу
- И хранение некоторой информации в общем расположении-обычно это база данных
- Затем вашим веб-страницам нужно будет только проверить это общее местоположение (базу данных), если информация там есть.
Таким образом, ваши веб-страницы всегда будут работать :
- Даже если пользователей много, только cronjob загрузит страницу
- И даже если cronjob какое-то время не будет работать, веб-страница будет работать ; худшее, что может случиться, — это устаревшая информация.
Комментарии:
1. Подождите, так я могу даже использовать старый добрый perl для извлечения и обработки?
2. Ну, а почему бы и нет ? 😉 Вам просто нужно найти способ хранить информацию на одной стороне (Perl) и читать ее на другой стороне (PHP) ; база данных, файлы … есть несколько решений, которые вы можете использовать 🙂
Ответ №2:
Другие уже предлагали использовать периодический сценарий cron, который, я бы сказал, вероятно, является лучшим вариантом, хотя, как упоминает Пол, это зависит от вашего варианта использования.
Однако я просто хотел напрямую ответить на ваш вопрос, а именно: как работает демон в PHP? Ответ заключается в том, что он работает так же, как демон на любом другом языке — вы запускаете процесс, который не заканчивается сразу, и помещаете его в фоновый режим. Затем этот процесс опрашивает файлы или принимает подключения к сокетам или что-то в этом роде, и при этом выполняет некоторую работу.
(Это, очевидно, несколько упрощенный обзор, и, конечно, вам, как правило, понадобятся механизмы для управления процессами, для того, чтобы служба плавно завершила работу, и, возможно, интеграция в управление демонами операционной системы и т. Д. Но основы в значительной степени одинаковы.)
Ответ №3:
Как написать скрипт, который регулярно загружает файл?
для этого есть обучающие программы, такие как «cron» в linux (или unix)
Когда страница загружается, php выполняется только один раз,
всего один раз, точно так же, как index.php вашего сайта….
Если вы хотите обновить страницу, которая отображается в браузере, вам следует использовать какую-либо форму AJAX, если вам нужно что-то другое, кроме того, что ваш вопрос мне не ясен……