Автор Тема: Тест за jQuery & Ajax. Защо фейлва на Хром?  (Прочетена 4227 пъти)

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Моля да тествате качените скриптове на вашият сървър.
Това което правят е изпълняване на времеотнемаща задача и показване на текущия статус.
По-конкретно, изброява файлове и поддиректории в зададена от вас директория. Докато се изпълнява задачата, на екрана се показва текущата стойност. Когато завърши задачата се показва диалог със статуса - успех или грешка.

Не мога да а разбера защо скрипта пуснат под Хром, след завършване на операцията дава грешка - "Failed to load resource", а под Мозила завършва безпроблемно.

Много ще се радвам ако някой даде смислено обяснение :)

ПП: В скрипта dbRebuild.php задайте директория с няколко хиляди файлове. В качените файлове тук нарочно съм задал $dir = "/tmp".
При мен, тествам с директория от 10000 файла.
« Последна редакция: Jun 05, 2013, 09:46 от clovenhoof »
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

Demayl

  • Напреднали
  • *****
  • Публикации: 104
  • Distribution: XUbuntu,FreeBSD
  • Window Manager: Xfce
    • Профил
    • WWW
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #1 -: Jun 05, 2013, 10:07 »
Може да е от кеша на самия хром ( ако правиш нормални и ajax заявки към един и същ адрес ). Възможност 2 е да си под SSL / https / и да се опитваш да правиш ajax request кам http ( това е много дразнеща 'екстра' )
Активен

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #2 -: Jun 05, 2013, 10:08 »
Сега забелязвам че брояча не се показва при първо пускане.
Просто направете рефреш .
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #3 -: Jun 05, 2013, 10:11 »
Може да е от кеша на самия хром ( ако правиш нормални и ajax заявки към един и същ адрес ). Възможност 2 е да си под SSL / https / и да се опитваш да правиш ajax request кам http ( това е много дразнеща 'екстра' )

За кеша - $.ajaxSetup({ cache: false }); и си работи.
За второто, правя заявка към http://.

Забелязвам че и на други (нормални) страници Хрома показва тази грешка.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

Demayl

  • Напреднали
  • *****
  • Публикации: 104
  • Distribution: XUbuntu,FreeBSD
  • Window Manager: Xfce
    • Профил
    • WWW
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #4 -: Jun 05, 2013, 10:22 »
Хрома не му дреме че си сложил cache : false :d , иначе от http страница ли правиш заявката ? За всеки случаи сложи някакъв слъчаен параметър към url-a на ajax заявката.
Активен

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #5 -: Jun 05, 2013, 11:02 »
Добре, направо ще обясня какво искам да постигна и стига с този кеш защото не е това проблема и да не разводняваме темата.

Искам да покажа прогрес бар показващ текущият статус на времеотнемаща операция. Може би има значение че е файлова операция?!
Всичко е ок в реалния ми проект, освен това че не знам как да съхраня текущата стойност на прогреса като променлива на сървъра.
Да използвам сесията постепенно ми се струва отчайваща идея.
Най-лесно и най-тъпо би станало ако я съхранявам в базата, но не искам така да го правя.
Как се прави практически това на РНР?

Сега чета за нещо наречено APC, което може би ще свърши работа.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

Demayl

  • Напреднали
  • *****
  • Публикации: 104
  • Distribution: XUbuntu,FreeBSD
  • Window Manager: Xfce
    • Профил
    • WWW
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #6 -: Jun 05, 2013, 11:42 »
И да не ти се вярва Хрома кешира доста старателно, затова никога не пропускай тази възможност. Иначе няма значение какво ти прави скрипта след като не може да ти зареди respons-а. Иначе за това къде да го пазиш - кеш . Макар че в DB-то ще е най-удачно защото едва ли ще имаш много често изпълнение на този скрипт, а и ще можеш да си пазиш история . Иначе като гледам това APC сигурно ще ти свърши работа .
Активен

trout

  • Новаци
  • *
  • Публикации: 2
    • Профил
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #7 -: Jun 05, 2013, 12:27 »
Здравей,

тествах скрипта - наистина и при мен, когато dbRebuild.php се вика от мозила не дава грешка за разлика от хром.

С предварителната уговорка, че нямам никакъв опит с PHP, така че може и да греша но:

Освен, че забелязах в лог-а на апацхе следната грешка понякога :

PHP Fatal error:  Maximum execution time of 240 seconds exceeded in /usr/share/phpinfo/dbRebuild.php

мисля, че принципно не е добра идея изобщо да използваш нишката породена от http request-a за обработване на дълги операции.
Незнам как е в ПХП, но предполагам, че може да ти създаде доста други проблеми (примерно чисто хипотетично незнам какво става ако клиента или някой NAT реши да затвори тцп сокета - примерно поради неактивност, да не говорим за самото апаче и пхп които не случайно имат параметър за max-time-execution).

Според мен правилния подход е в dbRebuild.php да стартираш background нишка, а после от poll скрипта проверявай докъде е стигнала и евентуално върни на клиента
съобщение да спре да poll-ва като види, че операцията е приключила + резултата.
Активен

trout

  • Новаци
  • *
  • Публикации: 2
    • Профил
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #8 -: Jun 05, 2013, 13:02 »
Проблема определено не е от кеша и според мен.

Да пазиш междинния резултат от броенето на файловете в базата е тъпо наистина - доста даже :)
Мястото му е в сесията определено под една или друга форма

незнам за пхп - ако беше java щеше да направиш един обект с променлива за броя преброени файлове, ще го запишеш в сесията, пускаш нишка да ги брои и и подаваш обекта да записва в него колко е преброила, а в poll script-a го вадиш от сесията да видиш на тая променлива стойността - общо взето каквото правиш и ти.
Активен

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #9 -: Jun 05, 2013, 13:27 »
Разбрах проблема :) Хах

Код
GeSHi (PHP):
  1. ...
  2. flush(); // <--- Ето това да се добави!!!
  3. ...
  4.  

Явно за хрома трябва да се флашва буфера на сешън файла при файлови манипулации, както е случая при мен.
Добавих и едно:
Код
GeSHi (PHP):
  1. ini_set('max_execution_time', 300);
  2.  

В началото на файла.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тест за jQuery & Ajax. Защо фейлва на Хром?
« Отговор #10 -: Jun 05, 2013, 18:19 »
Ето работещ тест.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
curl AJAX
Web development
edmon 6 3117 Последна публикация Jun 14, 2010, 15:01
от BULFON
jQuery, асинхронна ajax заявка, abort()
Web development
gat3way 20 6162 Последна публикация Jul 13, 2010, 15:52
от VladSun
малко помощ с jquery
Web development
madmad 1 1731 Последна публикация Dec 18, 2010, 22:48
от neter
jquery datepicker да се зареди от трети файл
Web development
nov_chovek 6 2999 Последна публикация Jan 22, 2011, 21:18
от nov_chovek
jQuery, ajax, странни работи :)
Web development
gat3way 2 2737 Последна публикация Mar 25, 2011, 23:47
от gat3way