Подкиньте, пожалуйста, литературу грамотную по сабжу. Для каких реальных целей следует использовать потоки? Как часто используете потоки в собственных проектах?
[vs], Не факт, что демонов. Форкать можно и обычное приложение. Например, поток, в котором выполняется интерфейс запускает потоки на обработку данных, тем самым не зависая, когда дочерние потоки встают в ступор. В этом же случае можно отслеживать, что и где висит. Elkaz, Отличная статья применительно к PHP у Сергея Федотова: http://www.sergey89.ru/notes/php-multi- ... -part-one/ И Вам будет правильнее посмотреть что-нибудь по системному программированию под System V, абстрагировавшись от языка.
Необязательно. Для примера - это работа с STDIN, STDOUT и STDERR. Я бы хотел попробовать написать web-сервер на PHP. Есть уже готовое решение, но я хотел бы разобраться в этом самостоятельно. Да, именно это меня интересует - теория потоков, абстрагированная от языка. Посоветуете автора и название? Да, Сергея я читал. Тут Simpliest прав - мне интересны именно stream.
Пример: PHP: <?php function Twitter ($Message, $User){ if (!is_array ($User)) return false; if (strlen ($Message) > 140) return false; $Context = stream_context_create ( array ( 'http' => array ( 'method' => 'POST', 'header' => 'Authorization: Basic ' . base64_encode ($User['login'] . ':' . $User['password']) . "\r\n" . "Content-type: application/x-www-form-urlencoded\r\n", 'content' => http_build_query (array ('status' => $Message)), 'timeout' => 3, ), ) ); return file_get_contents ('http://twitter.com/statuses/update.xml', false, $Context) ? true : false; } if (Twitter ('Testing stream', array ('login' => 'User', 'password' => 'Password'))){ echo 'Message added'; } else { echo 'Error'; }
Ее нет как таковой. Потоки родились с мейнфреймов. По сути это устройства ввода/вывода и ничего более. Что конкретно интересует? Верхний уровень для PHP? В большинстве своем работа с ними примитивнейшая последовательный доступ в режиме записать/прочитать даже без возможности произвольного доступа. Все что нужно есть в мануале - список поддерживаемых протоколов http://php.net/manual/en/wrappers.html А собственно по протоколам нужно читать уже документацию не относящуюся к PHP
PHP: socket_create(AF_INET, SOCK_STREAM, SOL_TCP); SOCK_STREAM в данном случае - это тип сокета. На самом деле просто инициализируется какой-то обработчик, который работает с raw сокетом и следит за целостностью и последовательностью данных. Так и получается юзабильный поток =) Что и куда ты будешь передавать - твое дело. Можно сделать, например, ICQ-бота.