PHP несколько потоков как реализовать

12
bicdibus
На сайте с 14.08.2010
Offline
136
1554

Возможно ли в пхп одновременный вызов двух функций или что-то подобное, надо парсер ускорить, а то в один поток сильно медленно работает.

[cerebelum.ru
NothingMatters
На сайте с 12.06.2017
Offline
45
#1
bicdibus:
Возможно ли в пхп одновременный вызов двух функций или что-то подобное, надо парсер ускорить, а то в один поток сильно медленно работает.

Возможно, но лучше использовать более приспособленные языки (например GO).

Если парсинг через curl, то стоит использовать multi_curl.

Так же можно посмотреть в сторону pthreads

Mik Foxi
На сайте с 02.03.2011
Offline
1076
#2

мультикурл.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
danforth
На сайте с 18.12.2015
Offline
153
#3

Можно делать через & и консоль. Но синхронизации не будет. Вообще конечно лучше на Go переписать если не на хостинге.

Junior Web Developer
bicdibus
На сайте с 14.08.2010
Offline
136
#4

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

NothingMatters
На сайте с 12.06.2017
Offline
45
#5
bicdibus:
мне на локалхосте запускать. С курлом мне в общем понятно все, а вот мультикурл никак вкурить не могу. В GO нифига не шарю, немного делфи знаю, но у меня однопоток на пхп готов переписывать по новой займет много времени. Задержка в основном на получении страниц происходит. т.е. если сократить время получения контента, то скорость устроит.

Если мозги есть, то проще за недельку освоить GO, и не знать проблем с многопоточностью никогда.

Но если даже multi_curl вызывает проблемы, то остается только посочувтсвовать.

bicdibus
На сайте с 14.08.2010
Offline
136
#6

нашел пример, работает быстро, но выводит мне страницы в браузере, подскажите как эти страницы поместить в переменные


<?php
// создаем обработчики
$ch1 = curl_init();
$ch2 = curl_init();

// устанавливаем опции
curl_setopt($ch1, CURLOPT_URL, "https://www.sputnik.ru/search?q=jagger");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch2, CURLOPT_URL, "https://www.sputnik.ru/search?q=lenon");
curl_setopt($ch2, CURLOPT_HEADER, 0);

//create the multiple cURL handle
$mh = curl_multi_init();

// добавляем обработчики
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$running = null;
// выполняем запросы
do {
curl_multi_exec($mh, $running);
} while ($running > 0);

// освободим ресурсы
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>
TF-Studio
На сайте с 17.08.2010
Offline
334
#7

запустите N-потоков и не парьтесь

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
D
На сайте с 10.06.2017
Offline
1
#8

Мультикурл.

Честно говоря, не одобряю использование многопоточности в РНР. Тут скорее Джава, Питон.

N
На сайте с 29.06.2017
Offline
10
#9

Multi curl решает. Но надо помнить - нужен нормальный процессор, иначе выигрыша будет немного.

S
На сайте с 30.09.2016
Offline
469
#10
bicdibus:
нашел пример, работает быстро, но выводит мне страницы в браузере, подскажите как эти страницы поместить в переменные

Курите доки

CURLOPT_RETURNTRANSFER, 1
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий