Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.01.2010, 14:19
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Лично мне всегда больше нравился путь PHP, когда скопировал файлы рядом и подключил их, нежели путь того же Python, когда сначала нужно что-то установить.
Ответить с цитированием
  #12 (permalink)  
Старый 15.01.2010, 14:20
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Kolyaj
Вот только язык не предрасполагает писать в таком стиле.
ну, в базовом виде, конечно да.
но, это можно обойти при желании.
в нем есть способы для реализации колбеков, и создания простейшего событийного механизма
я специализируюсь в написании парсеров и граберов на PHP, и мною был сделан несложный модуль(базирующийся на multi-CURL, но легко переделываемый под любую другую асинхронность) из нескольких классов, который позволяет посылать одновременно несколько запросов, и обрабатывать по мере прихода.
кодирование сводится к созданию пары новых классов наследующих базовые: для контроля очереди и количества потоков, и для конкретных запросов(с двумя основными методами-создать запрос, и обработать пришедший)
короче, было бы желание, можно и из веревки застрелится))))
на сим я извиняюсь за офтопик, и ухожу из темы.
если интересна моя тема, то прошу в личку, или новую тему
Ответить с цитированием
  #13 (permalink)  
Старый 15.01.2010, 14:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gvozd
на сим я извиняюсь за офтопик, и ухожу из темы.
Ну почему же оффтопик, асинхронность по отношению к Node.js как раз не оффтопик

Опять же, в стандартном режиме работы в PHP на каждый запрос новый поток. Поэтому пока, например, асинхронно читается файл с диска, потоку, по большому счету, делать нечего. Node.js же в это время обрабатывает другие запросы.

Последний раз редактировалось Kolyaj, 15.01.2010 в 14:28.
Ответить с цитированием
  #14 (permalink)  
Старый 15.01.2010, 14:25
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от kurokikaze
Имхо стандарт должен определять синтаксис и модель языка, а не список доступных модулей. Так что библиотека может быть и внешней - главное чтобы основные модули были доступны сразу с Node, а дополнительные - по требованию.
Ну, все built-in модули стандарт описывает (и 3-я и 5-я редакции). Вопрос лишь в том, до какой степени создавать стандартную библиотеку в built-in режиме, а что - оставить для написания 3rd-party разработчикам.

К примеру, Ruby имеет большую стандартную библиотеку (хотя, всё это могло бы быть написано чисто на Руби, а сам Руби был бы небольшим ядром; кстати, где-то недавно видел финальный драфт спецификации по Руби, не знаю, описывались ли там все built-in модули или нет). Python тоже имеет немалую built-in библиотеку и часть py-built-in.

Сообщение от kurokikaze
Кстати, работа над package manager для Ноды уже идёт.
Угу, спасибо, посмотрю. Это какой-то альтернативный менеджер пакетов (в смысле, есть ли стандартный для Node.js)? Автор - Вы? Если да, развивайте - есть хорошая возможность занять нишу.

Сообщение от kurokikaze
А насчёт реализации - там Global interpreter lock, как в Питоне.
Угу, т.е., всё-таки, лочится на определённом моменте, а дальше может делаться fork текущего процесса?
__________________
Тонкости ECMAScript
Ответить с цитированием
  #15 (permalink)  
Старый 15.01.2010, 14:52
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Kolyaj
не оффтопик
ну раз так, то продолжаем обмен мнениями)))
Сообщение от Kolyaj
Опять же, в стандартном режиме работы в PHP на каждый запрос новый поток. Поэтому пока, например, асинхронно читается файл с диска, потоку, по большому счету, делать нечего. Node.js же в это время обрабатывает другие запросы.
да, PHP этого не умеет.
на каждый запрос всегда создается либо отдельный поток(модуль), либо отдельный процесс(CGI)
fast-CGI (хотя он не совсем в тему к асинхронным возможностям Node.js) в PHP насколько я знаю не реализован и опция такая поставлена "для заглушки"
НО! Пока конкретный экземпляр скрипта простаивает в ожидании данных из файла, остальные потоки/процессы продолжают обрабатывать запросы, что обеспечивается многопоточностью самой ОС/веб-сервера
Использовать же один процесс для обработки нескольких запросов вперемешку(а не последовательно как в fast-CGI), считаю плохой идеей, по-крайней мере если нету эффективного инструмента для отделения глобальных переменных от переменных индивидуальных для каждого запроса.

в любом случае, использование асинхронности в PHP является достаточно нетипичным, и если уж используется, то как правило пока идет чтение файла(ов), можно делать(и нужно) какое-то полезное действие(обработка прочитанных блоков,действия не зависящие от файла)
Ответить с цитированием
  #16 (permalink)  
Старый 15.01.2010, 15:10
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gvozd
fast-CGI (хотя он не совсем в тему к асинхронным возможностям Node.js) в PHP насколько я знаю не реализован и опция такая поставлена "для заглушки"
Если так, то совсем всё плохо.

Сообщение от Gvozd
НО! Пока конкретный экземпляр скрипта простаивает в ожидании данных из файла, остальные потоки/процессы продолжают обрабатывать запросы, что обеспечивается многопоточностью самой ОС/веб-сервера
Так они и при синхронной работе то же самое делают.

Сообщение от Gvozd
Использовать же один процесс для обработки нескольких запросов вперемешку(а не последовательно как в fast-CGI), считаю плохой идеей, по-крайней мере если нету эффективного инструмента для отделения глобальных переменных от переменных индивидуальных для каждого запроса.
// созданные здесь переменные будут глобальными для всех запросов
http.createServer(function() {
    // созданные здесь переменные будут локальными для каждого запроса.
})
А вот обмен данными между запросами в PHP уже можно реализовать только через базу/файлы.

Порог входа, разумеется, получается выше чем у PHP, но зато возможностей гораздо больше.
Ответить с цитированием
  #17 (permalink)  
Старый 15.01.2010, 15:29
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Kolyaj
А вот обмен данными между запросами в PHP уже можно реализовать только через базу/файлы.
есть достаточно мало задач, где бы могло понадобится взаимодействие между происходящими в данный момент запросами.
поэтому как правило БД и файлов вполне достаточно
тем не менее, можно использовать для этого механизм семафоров и общей памяти, хотя не разу им не пользовался, и не в курсе, насколько он эффективен
HEAP-таблицы вполне пригодны для обмена переменными
также в случае CGI можно попытаться писать в stdin-поток других экземпляров скриптов, но не уверен
Ответить с цитированием
  #18 (permalink)  
Старый 15.01.2010, 15:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А мне вот интересно. 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";
Ответить с цитированием
  #19 (permalink)  
Старый 06.02.2010, 14:36
Интересующийся
Отправить личное сообщение для moro Посмотреть профиль Найти все сообщения от moro
 
Регистрация: 18.11.2009
Сообщений: 10

проверял на mac book pro:
node.js Requests per second: 49.72 [#/sec] (mean)
php Requests per second: 38.97 [#/sec] (mean)
Ответить с цитированием
  #20 (permalink)  
Старый 06.02.2010, 19:15
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

moro,
спасибо, результаты радуют.

Сообщение от moro
node.js Requests per second: 49.72 [#/sec] (mean)
Близко к результатам Симона и к максимально возможному количеству.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск