Титла: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: clovenhoof в Jun 05, 2013, 09:43 Моля да тествате качените скриптове на вашият сървър.
Това което правят е изпълняване на времеотнемаща задача и показване на текущия статус. По-конкретно, изброява файлове и поддиректории в зададена от вас директория. Докато се изпълнява задачата, на екрана се показва текущата стойност. Когато завърши задачата се показва диалог със статуса - успех или грешка. Не мога да а разбера защо скрипта пуснат под Хром, след завършване на операцията дава грешка - "Failed to load resource", а под Мозила завършва безпроблемно. Много ще се радвам ако някой даде смислено обяснение :) ПП: В скрипта dbRebuild.php задайте директория с няколко хиляди файлове. В качените файлове тук нарочно съм задал $dir = "/tmp". При мен, тествам с директория от 10000 файла. Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: Demayl в Jun 05, 2013, 10:07 Може да е от кеша на самия хром ( ако правиш нормални и ajax заявки към един и същ адрес ). Възможност 2 е да си под SSL / https / и да се опитваш да правиш ajax request кам http ( това е много дразнеща 'екстра' )
Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: clovenhoof в Jun 05, 2013, 10:08 Сега забелязвам че брояча не се показва при първо пускане.
Просто направете рефреш . Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: clovenhoof в Jun 05, 2013, 10:11 Може да е от кеша на самия хром ( ако правиш нормални и ajax заявки към един и същ адрес ). Възможност 2 е да си под SSL / https / и да се опитваш да правиш ajax request кам http ( това е много дразнеща 'екстра' ) За кеша - $.ajaxSetup({ cache: false }); и си работи. За второто, правя заявка към http://. Забелязвам че и на други (нормални) страници Хрома показва тази грешка. Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: Demayl в Jun 05, 2013, 10:22 Хрома не му дреме че си сложил cache : false :d , иначе от http страница ли правиш заявката ? За всеки случаи сложи някакъв слъчаен параметър към url-a на ajax заявката.
Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: clovenhoof в Jun 05, 2013, 11:02 Добре, направо ще обясня какво искам да постигна и стига с този кеш защото не е това проблема и да не разводняваме темата.
Искам да покажа прогрес бар показващ текущият статус на времеотнемаща операция. Може би има значение че е файлова операция?! Всичко е ок в реалния ми проект, освен това че не знам как да съхраня текущата стойност на прогреса като променлива на сървъра. Да използвам сесията постепенно ми се струва отчайваща идея. Най-лесно и най-тъпо би станало ако я съхранявам в базата, но не искам така да го правя. Как се прави практически това на РНР? Сега чета за нещо наречено APC, което може би ще свърши работа. Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: Demayl в Jun 05, 2013, 11:42 И да не ти се вярва Хрома кешира доста старателно, затова никога не пропускай тази възможност. Иначе няма значение какво ти прави скрипта след като не може да ти зареди respons-а. Иначе за това къде да го пазиш - кеш . Макар че в DB-то ще е най-удачно защото едва ли ще имаш много често изпълнение на този скрипт, а и ще можеш да си пазиш история . Иначе като гледам това APC сигурно ще ти свърши работа .
Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: trout в 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-ва като види, че операцията е приключила + резултата. Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: trout в Jun 05, 2013, 13:02 Проблема определено не е от кеша и според мен.
Да пазиш междинния резултат от броенето на файловете в базата е тъпо наистина - доста даже :) Мястото му е в сесията определено под една или друга форма незнам за пхп - ако беше java щеше да направиш един обект с променлива за броя преброени файлове, ще го запишеш в сесията, пускаш нишка да ги брои и и подаваш обекта да записва в него колко е преброила, а в poll script-a го вадиш от сесията да видиш на тая променлива стойността - общо взето каквото правиш и ти. Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: clovenhoof в Jun 05, 2013, 13:27 Разбрах проблема :) Хах
Код
Явно за хрома трябва да се флашва буфера на сешън файла при файлови манипулации, както е случая при мен. Добавих и едно: Код
В началото на файла. Титла: Re: Тест за jQuery & Ajax. Защо фейлва на Хром? Публикувано от: clovenhoof в Jun 05, 2013, 18:19 Ето работещ тест.
|