Посоветуйте организацию многопользовательских веб сервисов

HelpFinder

Новичок
Посоветуйте организацию многопользовательских веб сервисов

Пришла ТЗ написать прграмму на php, которая бы брала из базы адреса страниц, посещала бы их и парсила. Написал всё это на php5 и mysql5 с использователем curl. положил на хостинг. Если нужно проверить большое число страниц, то произойдет большая нагрузка на сервер и через веб интерфейс это уже не прокатит. посоветуйте как решить проблему? написать скрипт типа самодельного планировщика. Скрипт запущенный Кроном чтобы висел в памяти и запускал свои задачи обхода не последовательно-непрерывно. а спустя некоторые интервалы? и чтобы после окончания обхода ждал сутки до следующего сеанса обхода? или как вы это делаете когда скрипт должен проработать несколько минут? и вобще php для таких целей подходит? сервисом будут пользоваться десятки зарегестрированхы пользователей. правда сканирование будет происходить планово раз в неделю, а результаты можно будет получать постоянно запросами к базе. Посоветуйте, ато потеряю хорошего заказчика. может нужно всёже на Перл и Пострегре перейти?

-~{}~ 23.07.06 18:40:

Как вобще нужно подходить к написанию Веб сервисов, которыми будут пользоваться множество пользователей? может есть какие концепции или где-нибудь есть фак по этому?
 

eXtreme

Новичок
Кроном можно запускать скрипт и хранить где-нибудь (и БД) количество запущенных экземпляров.
При срабатывании крона проверяем количество запущенных экземпляров и, если они меньше допустимого числа, инкрементируем это значение и выполняем скрипт. А также хорошо бы зарегистрировать shutdown функцию, которая будет это значние уменьшать на 1 в любом случае при завершении скрипта. Если значение больше или равно макс. допустимому - просто выходим.

-~{}~ 23.07.06 19:08:

Да и еще добавочка. Выбирать за один раз можно не одно, а скажем 3 адреса. И стоит установить лимит времени на работу скрипта. Все эти значения определяются опытным путем, т.к. сильно зависят от хостинг площадки.
 

HelpFinder

Новичок
А сколько скриптов то за раз запускать? и через сколько раз активизировать крон? или по другому сделать? Запустить один скрипт, и чтобы он работал и засыпал после каждой доли адресов?
 

eXtreme

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

-~{}~ 23.07.06 19:31:

Вообщем алгоритм такой:

// скрипт, запускаемый кроном каждую минуту
// максимальное количесво копий скрипта 10

получаем количество запущенных копий (это может быть запись в БД)

ЕСЛИ это количество < 8 ТО

инкрементируем количество на 3

регистрируем shutdown функцию, которая уменьшает это значение на 3

делаем выборку 3-х адресов и в 3 иттерации цикла поучаем удаленный контент

выход

ИНАЧЕ (количество копий >= 8)

выход

-~{}~ 23.07.06 19:53:

// чтобы не ждать пока завершатся все 3 запроса - другой вариант

// скрипт, запускаемый кроном каждую минуту
// максимальное количесво копий скрипта 10

получаем количество запущенных копий (это может быть запись в БД)

ЕСЛИ (10 - количество копий) > 3 ТО ИНКРЕМЕНТ = 3 ИНАЧЕ ИНКРЕМЕНТ = (10 - количество копий)

регистрируем shutdown функцию, которая уменьшает это значение на ИНКРЕМЕНТ

цикл в ИНКРЕМЕНТ иттераций
инкрементируем количество копий на 1
поучаем удаленный контент
декрементируем количество копий на 1 в том числе в shutdown функции

выход
 
Сверху