longer
Guest
multi_thread сбор данных
Здравствуйте,
Подскажите каким способом экономичнее с точки зрения расходования ресурсов памяти и процессора решить следующую задачу:
Пользователь запрашивает удаленный ПХП-скрипт (сервер Апач1, ПХП как модуль), который обращается с параметрами (get) через сокеты к пяти (возможно более) серверам и получает от них новости.
Формат новостей -- текстовая строка с разделителями и контрольной суммой в конце (формат не так важен).
Хотелось бы сделать, чтобы Родительский процесс запускал Дочерние процессы:
- соединение с сервером 1, прием данных в буфер1, отключение;
- соединение с сервером 2, прием данных в буфер2, отключение;
...
- соединение с сервером 5, прием данных в буфер5, отключение;
в режиме multi_thread, чтобы подвисание одного из процессов не влияло на другие.
По истечению критического времени $time_max Родительский процесс должен принудительно закрыть все активные соединения (прибить дочерние процессы, даже если данные были приняты не полностью или вообще не приняты), обработать полученный результат из буферов 1-5 и выдать пользователю сводную ленту (все, что смог собрать).
http://phpclub.ru/talk/showthread.php?threadid=42934 -- изучал, но есть вопросы.
Можно ли в решении обойтись без pcntl_fork(), т.к. It is not possible to use the function 'pcntl_fork' when PHP is used as Apache module. Не хотелось бы запускать ПХП как ЦГИ (возможно я не прав).
Что из этого:
http://detail.phpclub.net/store/sources/class.phpServerMultiTask.phps
http://pear.php.net/package/Net_Server
http://cvs.php.net/co.php/pear/Net_Server/Server.php?r=1.5
http://www.php-tools.de/site.php?file=patServer/overview.xml
больше подходит для решения моей задачи?
Решения на С, Перле не подходят -- задача ставилась для ПХП
Желательно поменьше пинать ногами, возможно я чего-то и недопонимаю, за советом ведь пришел
Здравствуйте,
Подскажите каким способом экономичнее с точки зрения расходования ресурсов памяти и процессора решить следующую задачу:
Пользователь запрашивает удаленный ПХП-скрипт (сервер Апач1, ПХП как модуль), который обращается с параметрами (get) через сокеты к пяти (возможно более) серверам и получает от них новости.
Формат новостей -- текстовая строка с разделителями и контрольной суммой в конце (формат не так важен).
Хотелось бы сделать, чтобы Родительский процесс запускал Дочерние процессы:
- соединение с сервером 1, прием данных в буфер1, отключение;
- соединение с сервером 2, прием данных в буфер2, отключение;
...
- соединение с сервером 5, прием данных в буфер5, отключение;
в режиме multi_thread, чтобы подвисание одного из процессов не влияло на другие.
По истечению критического времени $time_max Родительский процесс должен принудительно закрыть все активные соединения (прибить дочерние процессы, даже если данные были приняты не полностью или вообще не приняты), обработать полученный результат из буферов 1-5 и выдать пользователю сводную ленту (все, что смог собрать).
http://phpclub.ru/talk/showthread.php?threadid=42934 -- изучал, но есть вопросы.
Можно ли в решении обойтись без pcntl_fork(), т.к. It is not possible to use the function 'pcntl_fork' when PHP is used as Apache module. Не хотелось бы запускать ПХП как ЦГИ (возможно я не прав).
Что из этого:
http://detail.phpclub.net/store/sources/class.phpServerMultiTask.phps
http://pear.php.net/package/Net_Server
http://cvs.php.net/co.php/pear/Net_Server/Server.php?r=1.5
http://www.php-tools.de/site.php?file=patServer/overview.xml
больше подходит для решения моей задачи?
Решения на С, Перле не подходят -- задача ставилась для ПХП
Желательно поменьше пинать ногами, возможно я чего-то и недопонимаю, за советом ведь пришел