Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Написать враппер, управляющий запуском скриптов 
:(
    Опции темы
Burrr
Дата 29.5.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 4.9.2005

Репутация: 1
Всего: 20



Необходимо запускать скрипт с определенной частотой и рандомными интервалами. Например, я хочу, чтобы мой скрипт запускался 30 раз в час, но не равномерно через каждые 2 минуты, а с разными интервалами по времени, определяющимися по рандому.

Как оказалось, крон с такой задачей справиться не может, но можно написать некий враппер, который будет управлять запуском скриптов. 
Вопросы:
1) Как его написать на PHP?
2) Куда его размещать, чтоб он работал?




--------------------
PM MAIL ICQ   Вверх
Burrr
Дата 29.5.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 4.9.2005

Репутация: 1
Всего: 20



Неужели никто не знает?
Алгоритм мне не нужен (и так знаю). 
Напишите, плз, какие ф-ии в PHP позволят написать скрипт, управляющий запуском других скриптов. Я бы использовал cron (простой крон у моего прова без наваротов), но он не поддерживает такой функционал и не может запускать скрипт чаще раза в минуту.


--------------------
PM MAIL ICQ   Вверх
WolfON
Дата 29.5.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Пхп не предназначен для того чтобы постоянно висеть работающим, но попытаться можно, если очень хочется, хотя на большинстве серверов так сделать не получится

Для запуска - exec
PM MAIL ICQ   Вверх
sTa1kEr
Дата 29.5.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(WolfON @  29.5.2007,  17:28 Найти цитируемый пост)
Пхп не предназначен для того чтобы постоянно висеть работающим, но попытаться можно, если очень хочется, хотя на большинстве серверов так сделать не получится

Не совсем согласен. PHP CLI может работать сколько угодно долго и при этом потреблять незначительное количество процессорных ресурсов (но, правда, около 13 мб памяти он в любом случае скушает и не подавится :( ). Разработчики PHP даже предоставляют возможность использовать его как сервер (stream_socket_server) smile

По теме:
1. Если делать максимально просто и грубо, то достаточно поставить бесконечный цикл. Пример:
Код

#!/bin/php
<?php
// !!! Первая строка - это путь к PHP. Обязательна в *nix-ах для запуска как скрипт.

$ticksPerHour = 600;

$avg = 3600 / $ticksPerHour;
$min = 0;
$max = $avg * 2;

while(true)
{
   $time = rand($min, $max);
   sleep($time);

   system("echo Elapsed $time sec");
}

?>


2. Размещать куда угодно. Для запуска нужно поставить ему атрибут +x (т.е. исполняемый). Для того что бы он запустить в бэкграунде, надо дописать в конце "&" (т.е. так "./myscript &"). Но не забудь сначала сделать детальное логирование и отладить перед запуском.
PM MAIL   Вверх
Fally
Дата 30.5.2007, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: 3
Всего: 4



Самое главное в начале скрипта забыли (:
Код

set_time_limit(0);



--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
sTa1kEr
Дата 30.5.2007, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Fally @  30.5.2007,  00:57 Найти цитируемый пост)
Самое главное в начале скрипта забыли (:
Выделить всёкод PHP
1:
    
set_time_limit(0);

Не правда Глава 43. Использование PHP в командной строке:
Цитата

max_execution_time    0 (без ограничений)  Из-за неограниченных возможностей использования PHP в командной строке максимальное время выполнения скрипта не ограничено. В то время, как приложения, написанные для веб, выполняются достаточно быстро, консольные приложения могут выполняться в течении длительного времени.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.