Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Фоновый запуск функции
Форумы портала PHP.SU » PHP » Программирование на PHP » Фоновый запуск функции

Страниц (1): [1]
 

1. SooR - 09 Июля, 2010 - 21:06:55 - перейти к сообщению
Добрый день уважаемые.

Пишу скрипт для радио, сервер на IceCast, историю эфира не выводит, поэтому надо писать ручками.

Есть скрипт на php, который парсит xml со статистикой сервера и текущим треком, выводит эти данные когда пользователь зашел на сайт радио.

Как организовать запись текущего трека в базу, если никто не заходил на сайт и не вызывал скрипт к работе?

Проще говоря - как заставить сработать скрипт без вызова его клиентом?
2. SAD - 09 Июля, 2010 - 21:30:54 - перейти к сообщению
cron?
3. SooR - 09 Июля, 2010 - 21:37:12 - перейти к сообщению
В командах вообще не шарю.
Хотелось бы из под самого php тем более крона нет, сейчас на денвере делаю.
Нашел мимолетом способ

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //Игнорировать обрыв связи с браузером
  3. //Время работы скрипта неограничено
  4. //Пауза между действиями, в секундах
  5. $interval=10*60;
  6. do{
  7.    //Программный код, который должен выполняться
  8.    //...
  9.  
  10.    //Остановка скрипта, работающего в фоновом режиме
  11.    if (file_exists("stop.txt")) break;
  12.    //Пауза
  13.    sleep($interval);
  14. }while(true);
  15. ?>


Такая реализация будет нормальной?
4. ArchAngel - 09 Июля, 2010 - 22:11:22 - перейти к сообщению
оО давно хотел такое сделать.
спасибо за идею.

но тут надо добавить в начало скрипта вот это:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ip_access = "192.168.0.1";
  3. $getip = getenv("REMOTE_ADDR");
  4. if($ip_access !== $getip) die("Access deid!.");


В: Зачем?
О: потому что если много раз зайти на скрипт то скрипт будет автоматом обновлятся и будет грузить веб сервер.
5. SooR - 09 Июля, 2010 - 22:56:58 - перейти к сообщению
ArchAngel

Вообще считаю такую идею сугубо административной, поэтому предлагаю вывести данный скрипт в отдельный файл, доступ к которому имеет только админ и запускать его спокойно.

Но тут камни под водой: многие хосты режут анлим выполнения сценария, на античате почитал что обходят данный запрет путем введения 99999999 в set_time_limit();
или htaccess.
6. JustUserR - 10 Июля, 2010 - 03:38:53 - перейти к сообщению
ArchAngel пишет:
Потому что если много раз зайти на скрипт то скрипт будет автоматом обновлятся и будет грузить веб сервер
Это означает что схема запуска PHP-скрипта в режиме работы типа deamon-сервиса через web-окружение не является оптимальной - если вам необходимо взаимодействие с HTTP-клиентом то можете использовать отдельные транспортные PHP-скрипты и отдельный CGI-скрипт deamon-сервиса который работает в фоновом режиме вне зависимости от web-сервера
Конечно в транспортном PHP-скрипте можно огранизовать дополнительную проверку на тот случае если ваш deamon-сервис упадет - и соответственно осуществить его перезапуск При этом еще необходимо правильно организовать запуск процессов от имени нужных пользователей

 

Powered by ExBB FM 1.0 RC1