Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запуск "сам себя"
 
 автор: ZuArt   (04.04.2007 в 14:56)   письмо автору
 
 

В общем суть такова...

Есть скрипт, который должен работать практически все время... Берет порцию данных - обрабатывает и должен ВЫГРУЗИТЬСЯ, запустив себя самого же в другом потоке (делается это, дабы сервак не убил скрипт по тайму или по использованию памяти)...

- Крон не подходит, т.к. один поток скрипта должен ОБЯЗАТЕЛЬНО завершить свою работу до запуска следующего потока (разделяемые ресурсы с монополным доступом)
- инклюдить тоже (думаю все понимают, что это рекурсивный бесконечно разрастающийся ОДИН процесс)
- через "eval" и т.п. - вариант возможный, но код скрипта должен совершенно не зависеть от папки, хостинга (Вынь/Юних)


... какие есть варианты ??? =)

   
 
 автор: cheops   (05.04.2007 в 01:12)   письмо автору
 
   для: ZuArt   (04.04.2007 в 14:56)
 

Ограничение по времени выполнения скрипта вводятся как раз для того, чтобы таких скриптов не было - если его нельзя обойти - скрипт рано или поздно пректит свою работу. В время выполнения скрипта не входит время затрачиваемое на загрузку данных из сети и обращение к базе данных. Поэтому рационально ввести два потока - один качает, другой время от времени просывается (по cron) и обрабатывает, что первый накачал... Первый скрипт будет всё равно заканчиваться рано или поздно по таймауту и его всё равно придётся перезапускать по cron.

   
 
 автор: ZuArt   (05.04.2007 в 16:27)   письмо автору
 
   для: cheops   (05.04.2007 в 01:12)
 

рационально ввести два потока
пускай даже и так... НО... первый то скрипт должен постоянно качать данные и "складировать" их в храничище (пускай даж и временное)... а при работе второго, тот должен забирать эти данные... вот вопросы сразу встают
- первый должен пахать и пахать
- при запуске второго, первый должен "уснуть", чтобы второй мог забрать и обработать данные, накаченные первым.

   
 
 автор: Gust   (05.04.2007 в 17:12)   письмо автору
 
   для: ZuArt   (05.04.2007 в 16:27)
 

А так:

if (!isset($_GET['s'])) {
//закачать порцию данных
echo "<head><meta http-equiv="Refresh" content="0; url=http://url.php?s=1"></head>" ;
}else{
//обработать порцию данных
echo " <head> <meta http-equiv="Refresh" content="0; url=http://url.php"> </head>" ;
};

   
 
 автор: Trianon   (05.04.2007 в 17:18)   письмо автору
 
   для: ZuArt   (05.04.2007 в 16:27)
 

Обычно один процесс пополняет очередь, а другой её разгребает.
При этом они оба работают параллельно и независимо друг от друга.
Единственное пересечение при добавлении/изъятии элемента в.из очереди решается организацией критической секции строго на момент операции с очередью. Все остальное всремя процессы друг-другу никак не мешают.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования