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

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

19.10.2014, 12:16. Показов 1782. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru