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

(Ответов: 30, Просмотров: 4904)
Страница 1 из 4 123 Последняя
  1. Опытный Аватар для LIME
    • Регистрация: 02.09.2009
    • Сообщений: 420
    • Репутация: 16
    Как вы реализуете многопоточность в своих скриптах?
    • 0
  2. Студент
    • Регистрация: 02.09.2009
    • Сообщений: 53
    • Репутация: 10
    Вообще многопоточности в php как таковой нет, только эмуляция )
    Пытался делать через curl_multi и сокеты
    • 0
  3. Senior Member Аватар для mr. werewolf
    • Регистрация: 02.09.2009
    • Сообщений: 401
    • Репутация: 11
    Цитата Сообщение от LIME Посмотреть сообщение
    Как вы реализуете многопоточность в своих скриптах?
    запуская скрипт в нескольких копиях =)
    • 0
  4. Студент Аватар для jonn22
    • Регистрация: 03.09.2009
    • Сообщений: 51
    • Репутация: 16
    Код:
    function get($base){
    
    $mh = curl_multi_init();
    foreach ($base as $i => $url) {
           $conn[$i]=curl_init($url);
           curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);
    
    curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt($conn[$i], CURLOPT_TIMEOUT, 8);
    
           curl_multi_add_handle ($mh,$conn[$i]);
    }
    do { $n=curl_multi_exec($mh,$active); } while ($active);
    foreach ($base as $i => $url) {
           $res[$i]=curl_multi_getcontent($conn[$i]);
           curl_close($conn[$i]);
    }
    
    return ($res);
    }
    ?>
    • 1

    Спасибо сказали:

    kir55rus(29.08.2012),
  5. Опытный Аватар для LIME
    • Регистрация: 02.09.2009
    • Сообщений: 420
    • Репутация: 16
    Цитата Сообщение от mr. werewolf Посмотреть сообщение
    запуская скрипт в нескольких копиях =)
    И ложа сервак? :)

    jonn22, а в чем плюс мультикурла?
    Я делаю через неблокируемые сокеты.

    PHP код:
        for($i 1$i <= 100$i++) {
        
            
            
    $query_url "http://path/to/script.php;
            
    $url_info = parse_url($query_url);

            
    $url_info['port'] = ($url_info['port']) ? $url_info['port'] : 80;
            
    $url_info['path'] = ($url_info['path']) ? $url_info['path'] : '/';
            
    $url_info['query'] = ($url_info['query']) ? '?' . $url_info['query'] : '';

            
    $query =     'GET ' . $url_info['path'].$url_info['query'] . " HTTP/1.1\r\n".
                        "
    Content-Typetext/xml\r\n".
                        'Host: ' . 
    $url_info['host'] . "\r\n".
                        "
    \r\n";


            
    $errno = 0;
            
    $error = '';

            
    $socket = fsockopen($url_info['host'], $url_info['port'], $errno$error, 10);
            if(!
    $socket) echo 'socket problem';
            fputs(
    $socket$query);
            fclose(
    $socket);
        } 
    ну типа такого
    • 0
  6. Студент Аватар для jonn22
    • Регистрация: 03.09.2009
    • Сообщений: 51
    • Репутация: 16
    ну кому как но лично мне та функция ближе к телу чтоли :) плюс она понятнее обычному кодеру. Минус: требует пхп5
    • 0
  7. Member Аватар для amster
    • Регистрация: 03.09.2009
    • Сообщений: 40
    • Репутация: 10
    А я использую класс, найденный в интернете, довольно удобный и результат в удобном виде получаем в итоге - описание класса
    • 0
  8. Опытный Аватар для LIME
    • Регистрация: 02.09.2009
    • Сообщений: 420
    • Репутация: 16
    Цитата Сообщение от amster Посмотреть сообщение
    А я использую класс, найденный в интернете, довольно удобный и результат в удобном виде получаем в итоге - описание класса
    Спасибо, потестим на досуге.
    Вкратце можешь пару слов сказать, много жрет, на скольких потоках?
    • 0
  9. Member Аватар для amster
    • Регистрация: 03.09.2009
    • Сообщений: 40
    • Репутация: 10
    Цитата Сообщение от LIME Посмотреть сообщение
    Спасибо, потестим на досуге.
    Вкратце можешь пару слов сказать, много жрет, на скольких потоках?
    Потребление ресурсов специально не тестировал, т.к. этот скрипт за 5 секунд всё, что нужно мне выкачивал и резких скачков в потреблении ресов замечено не было. Использовал 100 и чуть больше потоков.
    • 0
  10. Junior Member
    • Регистрация: 04.09.2009
    • Сообщений: 10
    • Репутация: 10
    я примерно также реализую многопоточность как jonn22
    • 0
Страница 1 из 4 123 Последняя

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры