Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 10

Как сделать многопоточность?

19.10.2014, 12:16. Показов 1801. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Парсится около 600 ссылок и если делать все через регулярки будет часы проверять.
Как сделать многопоточность на моем примере? Или как ускорить процесс?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php 
set_time_limit(200000);
$url = "http://filmcatch.ru/sitemap.xml"; //Адресс с которого будут парсится ссылки
$text=file_get_contents($url); 
if ($c=preg_match_all ("/<loc>(.*?)<\\/loc>/is", $text , $title)) 
{
  $x=1;
  $i=0;
  while($x!="") {
    $x=$title[1][$i];
    $t=$tim[1][0];
    if ($x!="") {
        
        $urql = $x; //Адресс с которого будут парсится ссылки
        $txt = file_get_contents($urql);
        preg_match_all ("/<iframe src=[\'\"](.*?)[\'\"]/", $txt , $tim); 
        foreach($tim[1] as $value){
        $teststrw = $value;
        $turlw=file_get_contents($teststrw);
        $searchw   = 'color:#777;';
        $posw = strpos($turlw, $searchw);
         
        if ($posw === false) {
            echo "";
        } else {
        echo '<div><a id="url" href="' . $x . '">' . $x . '</a><a id="video" href="' . $value . '">' . $value . '</a></div><br />';
        }   
    }
          
    }
 
    $i++;
  }
}
?>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.10.2014, 12:16
Ответы с готовыми решениями:

Как лучше сделать многопоточность
Здравствуйте, у меня в текстовом файле записаны ссылки, на которые надо осуществить запрос и далее обработать ответ. Без многопоточности...

Сделать многопоточность и синхронизацию
Добрый день. Нужно сделать многопоточность и синхронизацию. В потоках пока что не разобрался. Так вот я не могу понять как...

Многопоточность в C#. Можно ли сделать по другом?
Доброе время суток дорогие друзья. Наконец разобрался с моногопоточностью, но все равно есть пара вопросов. Ниже скинул код моей...

11
88 / 88 / 34
Регистрация: 22.05.2012
Сообщений: 404
19.10.2014, 13:21
Глянь тут http://ua2.php.net/manual/ru/book.pcntl.php
0
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 10
19.10.2014, 14:25  [ТС]
Не понял чем это мне поможет
0
88 / 88 / 34
Регистрация: 22.05.2012
Сообщений: 404
19.10.2014, 15:33
Цитата Сообщение от vlad123456 Посмотреть сообщение
Как сделать многопоточность
При помощи Process Control можно реализовать многопоточность
Еще тут есть немного по другому https://github.com/wielski/PHPThreads
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
19.10.2014, 16:05
vlad123456, многопоточность ускорит обработку, если вам доступно более одного процессора на сервере. В противном, кроме времени необходимого на саму обработку программы, добавится время на переключение между потоками.. А оно вам надо? И даже если у вас есть такие возможности на сервере, то все равно, самое узкое место в вашем скрипте это сеть, а она жирнее не станет. А в случае с многопоточностью - когда несколько потоков дерутся за один канал - получится медленнее, чем если бы все необходимые данные выгребал один поток. Попробуйте воду из колодца черпать десятью ведрами..
Цитата Сообщение от vlad123456 Посмотреть сообщение
Или как ускорить процесс?
получать инфу непосредственно у владельца, с его согласия
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
19.10.2014, 22:50
1.Попробуйте использовать для парсинга специальные библиотеки.
2.Перестать давать переменным бессмысленные значения.
3.Набраться терпения, если вы думаете что ваши 600 страниц на вашем слабеньком хостинге будут парсится за минуту в ошибетесь.

Добавлено через 1 минуту
Единственное на ум что приходит, это разделить парсинг на 2 файла по 300 ссылок.
И запустить их с консоли.

Хотя затея бредовая с многопоточностью в php.
0
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
20.10.2014, 13:18
Цитата Сообщение от bleef159 Посмотреть сообщение
Единственное на ум что приходит, это разделить парсинг на 2 файла по 300 ссылок.
И запустить их с консоли.
почему именно из консоли?
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
20.10.2014, 23:02
zebulun, можно и без консоли.
0
21.10.2014, 13:03

Не по теме:

Цитата Сообщение от zebulun Посмотреть сообщение
почему именно из консоли?
Слово потому что красивое :D Шутка, не огорчайтесь никто и тем более не обижайтесь. :)

0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
21.10.2014, 16:47
воспользуйтесь мульти cUrl'ом. Это будет быстрей чем file_get_contents.
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
21.10.2014, 16:49
Вы с консоли запускаете скрипт? - Если нет - запускайте с консоли, используйте pcntl_fork для распаралелливания.

Попробуйте понять такой код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for($i = 0; $i < 3; $i ++){
    $pid = pcntl_fork();
    switch($pid){
        case -1:
            die('Fork doesnt work, wtf?!');
        break;
        case 0:
            // child
            print "$i";
        break;
        default:
            // parent
        break;
    }
}
if($pid){
        pcntl_wait($status);
}
На выходе должно получится что-то в духе: 0112222.
0
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
21.10.2014, 16:57
Я бы посоветовал вариант bleef159, проще и надежней - разбиваете задачу на то кол-во частей, которое будет приемлемо и запускаете несколько экземпляров.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2014, 16:57
Помогаю со студенческими работами здесь

Сделать многопоточность - перебор 6 символов (26 английские)
Задача заключается в следующем 1)Надо сделать Многопоточность - перебор 6 символов (26 английские) Можно вприниципе простой массив...

Многопоточность, как?
Покажите как правильно реализовать, пробовал сам разобраться, мозгов нехватило. private: System::Void...

Как создать многопоточность?
Мне нужно организовать работу нескольких экземпляров webBrowser'a в разных потоках. Т.е. в webBrowser'е отображается страница, где есть...

Как включить многопоточность в Qt?
Пытаюсь сделать многопоточную функцию. Вроде должна работать, но в Qt выдает ошибку. ХЗ что делать. про файл: TEMPLATE = app CONFIG...

Как создать многопоточность
В сети гуглил, но так банального ответа для себя не нашёл, как размногопоточить приложение, в delphi делал так function getnumberbux:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru