1 Востаннє редагувалося mike (13.01.2015 00:58:26)

Тема: Конфіг веб-сервера [Вирішено]

Всіх доброго часу доби.
В мене вилізла одна проблема: На сторінці в бразері асинхронно через $.ajax() поститься 5 запитів до різних екшинів. Самі екшини мають різний час виконання, якісь довше якісь, а якісь коротше. Так вот, проблема в тому, що, по ідеї ці екшини мали б асинхронно виконуватись на бекенді, але всі вони виконуються по черзі, що і є проблемою.

В мене є думки, що це може бути повязано з тим що:

  • не добре сконфігурований nginx + php-fpm

  • або не добре сконфігурований php

  • або не добре сконфігурований сам сервак

Підкажіть куда копати.

P.S. Сервак ubuntu, крутиться десь в хмарах-амазону.
P.S.S. Ця сама історія повторюється і в мене локально під апач-ем.

(function(){
  console.log("called anonymously");
})()

2 Востаннє редагувалося Vo_Vik (12.01.2015 21:06:39)

Re: Конфіг веб-сервера [Вирішено]

це не сервак, це проблеми джаваскрипта.
Простий спосіб переконати вас у цьому, це відкрити 3 різних браузера і відкрити в них потрібну сторінку одночасно

3

Re: Конфіг веб-сервера [Вирішено]

Ну так, все буде добре, бо в трьох бравзерів три різні сесії.
А тут одна сесія, і вона важлива, треба її якось розпаралелити чи щось типу того.

(function(){
  console.log("called anonymously");
})()

4

Re: Конфіг веб-сервера [Вирішено]

Якщо ви говорите про сесію в розуміні пхп, то причому вона тут взагалі? Відкрийте дві вкладки в одному браузері, у ваз буде одна і та ж сама пхп сесія

5

Re: Конфіг веб-сервера [Вирішено]

ну так, і та сама сесія коли з одної вкладки джаваскрипт постить дані.
Тут  проблема не в джаваскрипті, бо:
Уявім ситуацію, є два екшина, які умовно працюють рівно 3 секунди sleep(3). І я відкриваю ці два екшина на двох різних вкладках одного бравзера. Потім, по черзі обновляю дві вкладки, і так все ок, кожна з них працює ~5 сек(+ час на "туда-сюда"). Але коли я обновляю одну вкладку, потім переходжу на іншу і обновляю іншу то, вот що виходить: перша вкладка обновилась за ~5 сек, а друга ~9 секунд.
Бачите різницю?

(function(){
  console.log("called anonymously");
})()

6

Re: Конфіг веб-сервера [Вирішено]

Неа. Кількість пхп пірів які запускає вебсервер, аж ніяк не залежить від сесії пхп, бо на момент запуску піру пхп сесія ще не ініціалізована.

І ще у багатьох браузерів є обмеження на кількість конектів до одного сервера. У вас напевно цей випадок. Який у вас браузер? Більшісь девтузів для браузерів дозволяються дивитись мікросекундну розкадровку запитів до сервера.

7

Re: Конфіг веб-сервера [Вирішено]

Бравзер Firefox + Firebug, на що звернути увагу в цій розкадровці? бо як на мене тут нічого цікавого.

(function(){
  console.log("called anonymously");
})()

8

Re: Конфіг веб-сервера [Вирішено]

На то що браузер не відсилає 3-й запит на сервер поки один з 2-х попередніх не закінчиться.

9 Востаннє редагувалося mike (13.01.2015 00:57:58)

Re: Конфіг веб-сервера [Вирішено]

Розібрався з причиною, довгих запитів. Вся суть в сесії, яка базується на файлах.
Природа роботи з файлами полягає в тому, що якщо хтось-один читає/записує, то інший змушений чекати. Вот і виходить так, що один скрипт відкрив собі сесію і працюює, а інший скрипт чекає, допоки попередній скрипт не завершить роботу.

Є два варіанти, як зробити краще, а це:

  • перейти на кастомну сесію і писати все в бд

  • або перед кожним читанням чи записом в сесію, відкривати її і закривати після завершення з нею роботи. Детальніше мож прочитати тут

Такщо, я думаю моя проблема вичерпана )

(function(){
  console.log("called anonymously");
})()

10

Re: Конфіг веб-сервера [Вирішено]

Гм, цікаво. ніколи раніше про таке не думав.