Можно ли создать несколько потоков в php?

6252525

Хочется закачивать много внешних страниц для их последующей обработки. И если их закачивать как обычно (последовательно то браузер закрывает сессию до того как все страницы успевают скачаться и обработаться.

Andbar

только мысли:
1)создай на веб-странице несколько скрытых ифреймов и работай с ними
2)работай по хттпс с браузером, там таймауты вроде поднатянутые
3)регулярно посылай заголовок, что-то типа "Ping: pong", тогда браузер будет думать, что какие-то данные передаются
4)вызывай их пхп некую внешнюю прогу

Werdna

И если их закачивать как обычно (последовательно то браузер закрывает сессию до того как все страницы успевают скачаться и обработаться.

Ты скачиваешь страницы браузером?

6252525

Видимо, надо уточнить:
- открываю браузером, например, index.php
- в котором имеется что-нибудь вроде
<?php
for ($i=0; $i<300; $i++)
$siteContent[$i]=file_get_contents($siteName[$i]);
?>
- поскольку это достаточно долгая процедура (пока не скачается одна страница, следующая скачиватсья не начнет а браузер рвет соединение через некоторое время, то она не успевает выполнитсья до конца и прерывается.
Собственно вопрос был в том, возможно ли решить как-нибудь это проблему. И, в частности, нельзя ли скачивание страниц запустить в несколько потоков, что бы ускорить выполнение этого скрипта.

6252525

thx, видимо, что-нибудь в этом духе и придеться делать

Werdna

Все неправильно, и на пхп такие вещи делать нельзя.

6252525

Не понял что неправильно?

Werdna


Не понял что неправильно?

Неправильно хотеть при загрузке одной веб-страницы дергать 300 других. Это ненормально.
Лучше всего напиши скрипт, который бы делал 300 wget'ов в определенный каталог, а на странице пиши "подождите" и изредка перегружай ее. После отработки всех wget'ов, просто подменивай текст на странице ожидания, и показывай то, что что хочешь.
Так будет честно и справедливо.

Maurog


Неправильно хотеть при загрузке одной веб-страницы дергать 300 других. Это ненормально.

так делает форум.локал на главной страничке.
поизучай.

Werdna

так делает форум.локал на главной страничке

форум.локал не образец для подражания. Это раз.
Во-вторых, если надо много что дернуть с локалхоста, то лучше это каким-то другим способом делать. Например, держать постоянные tcp-соединения.
Главная страница мэйла тоже много дергает. Тем не менее, относится к "легким"

6252525

thx
сделал с помощью wget и хитрыми java-script
наверное, то что получилось можно назвать "Ajax application" :-)

dasha69

наверное, то что получилось можно назвать "Ajax application"
а почему просто Ajax не использовать?

erotic

так делает форум.локал на главной страничке.
Можно поподробнее с этого места?

6252525

а почему просто Ajax не использовать?
Ну, насколька я понимаю Ajax - это просто общее описание к построению и изменению web-cтраниц, а конкретная реализация может быть весьма произвольной.
Собственно, одним из таких наборов скриптов я и пользовался
Subsys_JsHttpRequest: подкачка данных без перезагрузки страницы (AJAX)

slonishka

ага, я вот тоже не понял

Werdna

да наверное как всегда -- форум -- это куча словот.
каждый слот кэшируется. когда залогинений пользователь заходит ему дергаются нужные ему слоты и просто выводится шапка + сами слоты.
получется наверное даже сильно быстрее, но все равно ведь говнорешение, правда ведь?

uncle17

а как ты лучше быстродействие улучшишь? У нас, по идее, тоже так, хоть и не под каждого пользователя... Куча хтмл-файлов, они себе спокойно в сквиде живут, а как только что-нибудь обновляется, обновляется и сама хтмл-а

whale209

Создаешь массив с неблокирующими сокетами и дергаешь по страничке на сокет:
sockets
socket_set_nonblock
socket_select
Оставить комментарий
Имя или ник:
Комментарий: