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

Форум PHP

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

 

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

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

тема: pcntl - не мог бы кто разъяснить?
 
 автор: Shorr Kan   (20.04.2006 в 07:15)   письмо автору
 
 

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 -/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 -/home/login/public_html/script.php 5'); 
?>


Но в этом случае - к получению $res2 скрипт не приступит, пока не получит $res1 ... вот как бы это запустить в разных потоках, но чтобы получить единый массив в итоге?

   
 
 автор: Саня   (20.04.2006 в 14:05)   письмо автору
 
   для: 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 и собрать их в массив.

   
 
 автор: XPraptor   (20.04.2006 в 14:55)   письмо автору
 
   для: Саня   (20.04.2006 в 14:05)
 

PHP не может управлять потоками. Для этого надо вызвать стороннюю dll на сервере, самостоятельно тебе скорее всего не датут такого сделать, поэтому надо юзать что-то стандартное. Если ты нашел pcntl и он может работать в потоках, то изучай его структуру по хэлпу и примерам.
А вот непонятно зачем тебе сразу пять потоков? Почему по очереди не хочешь запросить страницы, скорость между сайтами очень высокая, время уйдет не много. Может лучше по очереди получить в массив нужные данные.

   
 
 автор: Shorr Kan   (20.04.2006 в 16:48)   письмо автору
 
   для: XPraptor   (20.04.2006 в 14:55)
 

Пять разных сайтов. Разных. Человек чай заварить успеет...

   
 
 автор: XPraptor   (21.04.2006 в 15:51)   письмо автору
 
   для: Shorr Kan   (20.04.2006 в 16:48)
 

Какой пять, какой чай млина. У меня грабер работает на сайте и ограничение у хостера на 30 секунд для скрипта. Я ему за один проход разрешаю 150 страниц пройти с разных сайтов и это с запасом, чтобы гарантировано не выскочил из 30 секундного интервала.
А вы тут про пять сайтов расказываете.

   
Rambler's Top100
вверх

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