ПредишенСледващото

  • PHP
  • MySQL
  • продуктивност
  • Node.js
  • уеб разработка

Налице е уеб-базирана система (PHP + MySQL на XAMPP), в локалната мрежа. В системата на няколко стотин потребители. броя на записите в базата данни расте много бързо в системата. С това увеличение спирачка и се увеличава натоварването на сървъра на процесора. Започнах да се копае в търсене на по-тясно място. Всички dooolgo верига разкопки няма да се откаже. В резултат на разкопки дойдох тук на това, което:

Xampp постави себе си на PC (Core i7, 8 ГБ RAM, Win7 Ultimate) на. Сложих node.js сървър за вашия компютър.
Аз правя жалба от PHP към MySQL база данни.

Таблица dreg_document 5000 записи. Аз ги избирате в цикъл от 1000 пъти. Този код работи на разстояние за 3.5 секунди.
(ЗНП не може да се използва по някаква причина, така че този код).

Аз правя едно и също третиране node.js сървъра

НО! Повторения е 100 пъти по-големи. Този код работи на разстояние 1,4 сек.

Напред. От браузър с отворен WebSocket връзката и да поиска node.js сървър, за да стартирате скрипта е показано по-горе. Изпълнение на клиента (браузър на Firefox):

Този код работи на разстояние 2 секунди. Това е отговорът на вашия браузър от servaka идва след 2 секунди. (И всичко това при същите 100 хиляди повторения)

В node.js използват следните модули:

Въпрос: Има ли мускулната водача се отнася и за възлите 150 пъти по-умни от PHP-shnogo (!)? Или греша тествам? Ако последното, кажи ми как да се тества.

Аз самият едва ли може да се смята, че node.js шофьор, пише преди няколко години, стотици пъти по-бързо от PHP, в която толкова много хора, които седят, и които постоянно се обновява и т.н.

Тя работи с MySQL до 150 пъти по-бързо от PHP

Послепис ЗНП протест. по-бавно

ZY 2
Протестирам отново. Неспоменат. 1000 itereatsy:
mysql_ * 3.4 секунди
ЗНП за 6,67 секунди
MySQLi за 6.68 секунди.

И така Благодаря за отговорите. Разбрах какво се случва. защото програмиране в node.js много колкото две седмици, аз съм погрешно тълкуване на резултатите. Промених теста и ето какво се случи:

Ако мислите, че на PHP-shnomu, след работа всички искания, се изпраща съобщение до клиента -
client.send ( "QWERTY");

Но в действителност, след това съобщението се изпраща, когато един възел-сървър за изпращане на всички база данни заявки. След това (! Без да чака отговор от базата данни), сървъра изпраща съобщение до клиента. клиент (браузър) Времето за преброяване (вляво, например 2 секунди до 100,000 повторения). И в този момент във възела продължава да получава отговори от базата данни. Тези отговори, които виждаме с помощта на
console.log (STR);
И тук се произвежда много различни резултати.

След това сменете сценария, както следва да се изчисли времето за изпълнение от 1-во до последния асинхронна връзка с базата данни:


резултат
100 повторения за 2.5 секунди (което е 15 пъти по-бавно от PHP)

Междинен отговор на тема:
Node.js е не по-бързо от PHP 150 пъти в проблема с достъпа до базата данни.
Напротив, Node.js в това отношение е 15 пъти по-бавно от PHP.
(Това е, ако вземете двата сървъра "извън кутията", без да се uluchshatelstv и настройки)

Нов въпрос:
Знаете последния ми тест е вярно? Или аз съм в него, също нещо не е направено?

За да получите това, което искате в идеята, за да получите кода, трябва да бъде по този начин:

/ * Започне на точката код * /
VAR повторения = 1000;

Var асинхронен = изискват ( "асинхронен");
Var MySQL = изискват ( "MySQL ');

Var връзка = mysql.createConnection (хост. Localhost "
потребител. "Root",
парола. "Тайната",
база данни. "Тест"
>);

console.time ( "node.js ');
async.times (повторения, функция (М, следващ) connection.query ( "SELECT * ОТ тест", функция (ERR, резултат) до (ERR, резултат);
>);
> Функция (заблуждават, резултати), ако (заблуждават) хвърли нова грешка (заблуждават);
console.timeEnd ( "node.js ');
console.log ( "резултати: ', results.length);
connection.end ();
>);

/ * КРАЙ НА NODE код * /

I 1000 искания върнати 1000 резултата за 320 милисекунди (MariaDB).

Проверка на базата на своята моята версия на кода, и нека никакви резултати получи. Не забравяйте да поставите модула асинхронен, което аз силно препоръчвам за вас, защото съдейки по ЗА цикъл в кода си, не знаете за него.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!