Лично мне всегда больше нравился путь PHP, когда скопировал файлы рядом и подключил их, нежели путь того же Python, когда сначала нужно что-то установить.
|
Цитата:
но, это можно обойти при желании. в нем есть способы для реализации колбеков, и создания простейшего событийного механизма я специализируюсь в написании парсеров и граберов на PHP, и мною был сделан несложный модуль(базирующийся на multi-CURL, но легко переделываемый под любую другую асинхронность) из нескольких классов, который позволяет посылать одновременно несколько запросов, и обрабатывать по мере прихода. кодирование сводится к созданию пары новых классов наследующих базовые: для контроля очереди и количества потоков, и для конкретных запросов(с двумя основными методами-создать запрос, и обработать пришедший) короче, было бы желание, можно и из веревки застрелится)))) на сим я извиняюсь за офтопик, и ухожу из темы. если интересна моя тема, то прошу в личку, или новую тему |
Цитата:
Опять же, в стандартном режиме работы в PHP на каждый запрос новый поток. Поэтому пока, например, асинхронно читается файл с диска, потоку, по большому счету, делать нечего. Node.js же в это время обрабатывает другие запросы. |
Цитата:
К примеру, Ruby имеет большую стандартную библиотеку (хотя, всё это могло бы быть написано чисто на Руби, а сам Руби был бы небольшим ядром; кстати, где-то недавно видел финальный драфт спецификации по Руби, не знаю, описывались ли там все built-in модули или нет). Python тоже имеет немалую built-in библиотеку и часть py-built-in. Цитата:
Цитата:
|
Цитата:
Цитата:
на каждый запрос всегда создается либо отдельный поток(модуль), либо отдельный процесс(CGI) fast-CGI (хотя он не совсем в тему к асинхронным возможностям Node.js) в PHP насколько я знаю не реализован и опция такая поставлена "для заглушки" НО! Пока конкретный экземпляр скрипта простаивает в ожидании данных из файла, остальные потоки/процессы продолжают обрабатывать запросы, что обеспечивается многопоточностью самой ОС/веб-сервера Использовать же один процесс для обработки нескольких запросов вперемешку(а не последовательно как в fast-CGI), считаю плохой идеей, по-крайней мере если нету эффективного инструмента для отделения глобальных переменных от переменных индивидуальных для каждого запроса. в любом случае, использование асинхронности в PHP является достаточно нетипичным, и если уж используется, то как правило пока идет чтение файла(ов), можно делать(и нужно) какое-то полезное действие(обработка прочитанных блоков,действия не зависящие от файла) |
Цитата:
Цитата:
Цитата:
// созданные здесь переменные будут глобальными для всех запросов http.createServer(function() { // созданные здесь переменные будут локальными для каждого запроса. })А вот обмен данными между запросами в PHP уже можно реализовать только через базу/файлы. Порог входа, разумеется, получается выше чем у PHP, но зато возможностей гораздо больше. |
Цитата:
поэтому как правило БД и файлов вполне достаточно тем не менее, можно использовать для этого механизм семафоров и общей памяти, хотя не разу им не пользовался, и не в курсе, насколько он эффективен HEAP-таблицы вполне пригодны для обмена переменными также в случае CGI можно попытаться писать в stdin-поток других экземпляров скриптов, но не уверен |
А мне вот интересно. Simon Willison приводит бенчмарк для сервера, отдающего "Hello, World" через 2 секунды
http.createServer(function(req, res) { setTimeout(function() { res.sendHeader(200, {'Content-Type': 'text/html'}); res.sendBody('<h1>Hello World</h1>'); res.finish(); }, 2000); }).listen(8080);У кого-нибудь есть под рукой инструменты, чтобы проверить PHP в той же ситуации? <?php sleep(2); echo "Hello, World"; |
проверял на mac book pro:
node.js Requests per second: 49.72 [#/sec] (mean) php Requests per second: 38.97 [#/sec] (mean) |
moro,
спасибо, результаты радуют. Цитата:
|
Часовой пояс GMT +3, время: 18:01. |