.
2 августа 2007

Многопоточность в PHP

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 4.33 из 5)
posted in Программирование |

При написании скриптов-парсеров все рано или поздно приходят к вопросу о многопоточной реализации оных.

Я не стал исключением и изучил довольно много информации по данному вопросу и пришел к выводу — нужно реализовывать на неблокируемых сокетах (мультикурл мне не понравился тем, что он может обрабатывать только пачками, т.е. при обработке 100 урлов на конечном этапе имеем снижение производительности — допустим 98 уже обработалось и вся система ждет обработку каких то 2х тормозных урлов, в конечном итоге теряя время).

Плотно пошарив в инете нашёл таки класс AunoAsyncHttp, на котором в дальнейшем я и выстраивал все свои многопоточные скрипты.

Кому интересны дебаты на счёт многопоточности вот пару интересных тем с умакс-форума:

На всякий случай выложу его на своем хостинге (а то мало ли) — AunoAsyncHttp

На этом всё — enjoy.

И ещё — PHP программистам: очень хотелось бы почитать в комментах ваше мнение о данном классе! Какую реализацию многопоточности в PHP используете Вы ?

Post to Twitter ReTweet

Похожие статьи

  • No related posts

У нас куча комментариев (9) на запись “Многопоточность в PHP”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 03.08.2007, veHab13 said:

    ну не многопоточность а асинхронные неблокируемые, зачем придумывать...

    а вообще я раньше смотрел на сокет селект, но после прочтения -A d u l t-а стало ясно что проще и надежнее через циклы с проверками на сосотояния и ошибками

    а вообще класс так и построен почти — как мне показалось на первый взгляд — не полная обработка ошибок — но если все работает всегда без сбоев — то я наверное ошибся

  2. 2 On 17.08.2007, alexf2000 said:

    Для чего нужна многопоточность? Если для загрузки чего либо из интернета, то тут основная проблема в том, что соединение может зависнуть

    в любом самом неожиданном месте, например при резолве хоста. То есть загнётся и мультикурл и этот класс и любой другой способ, в котором

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

    не заткнётся или заткнувшись не остановит все остальные. Я делаю так — открываю много соединений сам с собой, просто дёргаю тот же скрипт

    с нужными параметрами, а этот скрипт видя что его об этом просят — скачивает требуемые урлы и отдаёт их главному потоку. Шансов что сервер

    сам до себя не сможет достучаться немного, а если зависнет какой-то из вспомогательных потоков — это не так страшно. :) Этот подход работат

    почти на любых хостингах, но за универсальность приходится платить — способ ресурсоёмкий. Если можно запускать консольные команды, то можно

    модифицировать способ — вместо того чтобы открывать соединение сам с собой, запустить кучу пхп процессов. Правда не знаю что будет, если

    часть процессов будет зависать, очистит ли их линукс автоматически или они тыщами будут сидеть в памяти.

  3. 3 On 13.02.2008, Николай said:

    Как я понял этот класс не может выполнять POST запросы?

  4. 4 On 13.02.2008, GTAlex said:

    в исходном виде нет, модифицируй под себя — и будет :)

  5. 5 On 05.07.2008, Alexk said:

    к проблеме многопоточности я подошёл с другой стороны — использовал AJAX и асинхронные запросы.

  6. 6 On 30.01.2009, Avatar said:

    Пора изучать Php

  7. 7 On 09.04.2009, bb said:

    Alexk, хотелось бы услышать более развернутый ответ на счет многопоточности и Ajax'а.

    Может статейку напишешь? Или где почитать можно про это...

  8. 8 On 09.04.2009, Always last said:

    Самое обсуждаемое на блогах:
    "Цветная революция" в Молдавии
    Песах
    Международный день цыган

  9. 9 On 15.02.2010, Pavel said:

    Использую курл, стрим-функции, сокеты, форк. Про все это подробно рассказано здесь job-interview.ru/articles/post/62 Есть еще расширение для пхп, написанное на С, но с ним не работал, хотя говорят, что потоки там хорошо реализованы.

  10. Always Last said:
    Самое обсуждаемое на блогах:
    состав правительства
    вступил в «Единую Россию»
    в проведении книжного фестиваля

Оставить комментарий