|
|
|
| http://php.rinet.ru/manual/en/ref.pcntl.php - я пытался разобрать здешние функции.... Ну СОВСЕМ непонятно как этим пользоваться.
Задача у меня такова - человек заходит на страничку.... у меня есть, скажем, пять других сайтов. Для парсинга. Мне нужно посылать запрос на каждый, разбирать... собирать в массив определенную цифирку, сортировать весь этот общий массив (с пяти сайтов), и выводить человеку в порядке убывания цифирки.
Поочередно посылать на сайты - бесполезно. Нужно одновременно. Как это сделать? Использовать можно любые функции и любые расширения... exec, pcntl ... всё что угодно.
Может кто-нибудь подсказать - как? В верном ли направлении ( pcntl ) я копаю? И если да, то может кто-нибудь немножко разьяснить pcntl ? Дочерние, родительские процессы - это прекрасно, но зачем они нужны и как это связано с многопоточностью - я не понимаю.
Еще, насколько я понял, это (многопоточность) можно сделать сокетами... как-то. Но как - не понял.
В принципе, мне бы подошло нечто такое:
<?
$res1=exec("/usr/local/bin/php -f /home/login/public_html/script.php 1');
$res2=exec("/usr/local/bin/php -f /home/login/public_html/script.php 2');
$res3=exec("/usr/local/bin/php -f /home/login/public_html/script.php 3');
$res4=exec("/usr/local/bin/php -f /home/login/public_html/script.php 4');
$res5=exec("/usr/local/bin/php -f /home/login/public_html/script.php 5');
?>
|
Но в этом случае - к получению $res2 скрипт не приступит, пока не получит $res1 ... вот как бы это запустить в разных потоках, но чтобы получить единый массив в итоге? | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.04.2006 в 07:15)
| |
<?php
$site1 = file_get_contents("http://site1.com/script.php?params=параметры");
$site2 = file_get_contents("http://site2.com/script.php?params=параметры");
$site3 = file_get_contents("http://site3.com/script.php?params=параметры");
$site4 = file_get_contents("http://site4.com/script.php?params=параметры");
$site5 = file_get_contents("http://site5.com/script.php?params=параметры");
?>
| Вот я получил данные с пяти разных сайтов. Теперь задача сводится к тому, чтобы пропарсить переменные $site1...$site5 и собрать их в массив. | |
|
|
|
|
|
|
|
для: Саня
(20.04.2006 в 14:05)
| | PHP не может управлять потоками. Для этого надо вызвать стороннюю dll на сервере, самостоятельно тебе скорее всего не датут такого сделать, поэтому надо юзать что-то стандартное. Если ты нашел pcntl и он может работать в потоках, то изучай его структуру по хэлпу и примерам.
А вот непонятно зачем тебе сразу пять потоков? Почему по очереди не хочешь запросить страницы, скорость между сайтами очень высокая, время уйдет не много. Может лучше по очереди получить в массив нужные данные. | |
|
|
|
|
|
|
|
для: XPraptor
(20.04.2006 в 14:55)
| | Пять разных сайтов. Разных. Человек чай заварить успеет... | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.04.2006 в 16:48)
| | Какой пять, какой чай млина. У меня грабер работает на сайте и ограничение у хостера на 30 секунд для скрипта. Я ему за один проход разрешаю 150 страниц пройти с разных сайтов и это с запасом, чтобы гарантировано не выскочил из 30 секундного интервала.
А вы тут про пять сайтов расказываете. | |
|
|
|