За последние 24 часа нас посетили 32496 программистов и 1754 робота. Сейчас ищут 926 программистов ...

Stream programming

Тема в разделе "Прочие вопросы по PHP", создана пользователем Elkaz, 15 май 2010.

  1. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Подкиньте, пожалуйста, литературу грамотную по сабжу.
    Для каких реальных целей следует использовать потоки?
    Как часто используете потоки в собственных проектах?
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    кто то мне советовал использовать потоки для чата помнится пол года назад)
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Потоки на PHP? Это типа запуск нескольких демонов и распределение задач между ними?
     
  4. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    [vs],
    Не факт, что демонов. Форкать можно и обычное приложение.
    Например, поток, в котором выполняется интерфейс запускает потоки на обработку данных,
    тем самым не зависая, когда дочерние потоки встают в ступор.
    В этом же случае можно отслеживать, что и где висит.

    Elkaz,
    Отличная статья применительно к PHP у Сергея Федотова: http://www.sergey89.ru/notes/php-multi- ... -part-one/
    И Вам будет правильнее посмотреть что-нибудь по системному программированию под System V,
    абстрагировавшись от языка.
     
  5. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Петр
    Elkaz

    А теперь разберитесь между собой, о том ли вы говорите

    thread != stream
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Необязательно.
    Для примера - это работа с STDIN, STDOUT и STDERR. Я бы хотел попробовать написать web-сервер на PHP.
    Есть уже готовое решение, но я хотел бы разобраться в этом самостоятельно.

    Да, именно это меня интересует - теория потоков, абстрагированная от языка. Посоветуете автора и название?

    Да, Сергея я читал.
    Тут Simpliest прав - мне интересны именно stream.
     
  7. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Пример:
    PHP:
    1.  
    2. <?php
    3. function Twitter ($Message, $User){
    4.     if (!is_array ($User)) return false;
    5.     if (strlen ($Message) > 140) return false;
    6.    
    7.     $Context = stream_context_create (
    8.         array (
    9.             'http' => array (
    10.                 'method'    => 'POST',
    11.                 'header'    => 'Authorization: Basic ' . base64_encode ($User['login'] . ':' . $User['password']) . "\r\n" .
    12.                                 "Content-type: application/x-www-form-urlencoded\r\n",
    13.                 'content'   => http_build_query (array ('status' => $Message)),
    14.                 'timeout'   => 3,
    15.             ),
    16.         )
    17.     );
    18.        
    19.     return file_get_contents ('http://twitter.com/statuses/update.xml', false, $Context) ? true : false;
    20. }
    21.  
    22. if (Twitter ('Testing stream', array ('login' => 'User', 'password' => 'Password'))){
    23.     echo 'Message added';
    24. } else {
    25.     echo 'Error';
    26. }
    27.  
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    У тебя работает??
     
  9. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Elkaz
    у меня тоже 10 минут назад работала, щас - 403 ошибка o_0
     
  11. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    [vs]
    Timeout попробуй увеличить
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Elkaz
    Разобрался, дубликаты нельзя постить =)
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Ее нет как таковой.

    Потоки родились с мейнфреймов. По сути это устройства ввода/вывода и ничего более.

    Что конкретно интересует? Верхний уровень для PHP?

    В большинстве своем работа с ними примитивнейшая последовательный доступ в режиме записать/прочитать даже без возможности произвольного доступа.
    Все что нужно есть в мануале - список поддерживаемых протоколов http://php.net/manual/en/wrappers.html
    А собственно по протоколам нужно читать уже документацию не относящуюся к PHP
     
  14. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    SOCK_STREAM в данном случае - это тип сокета. На самом деле просто инициализируется какой-то обработчик, который работает с raw сокетом и следит за целостностью и последовательностью данных. Так и получается юзабильный поток =) Что и куда ты будешь передавать - твое дело. Можно сделать, например, ICQ-бота.