![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Dec 2010
Сообщений: 9
|
Используем связку AS3 и AMFPHP с LAMP сервером.
На двух разных nix серверах с разной конфигурацией (апач, nginx и разные версии php) периодически возникает следующая ошибка: AMFGateway: Net status: (Object)#0 code = "NetConnection.Call.Failed" description = "HTTP: Failed" (и всё, никакого кода ошибки) details = "http://.../server/gateway.php" На одном сервере нагрузка постоянная, на другом (dev) очень низкая. Проблема проявляется в разных браузерах (Опера, Хром в меньшей степени, Firefox), не зависимо от скорости интернета. Возникает не стабильно, то есть то нету. На своем компьютере могу воспроизвести просто открыв игру в Опере. На других Опера не гарантирует возникновение ошибки. Кто-нибудь сталкивался с подобным? Есть мысли как побороть проблему? Каждый день теряем юзеров из-за этой ошибки... помогите плз. |
|
|||||
|
Modus ponens
|
Включите все ошибки, и, очень важно, предупреждения. Было когда-то что-то похожее изза того, что где-то в AMFPHP делался foreach на пустом массиве. За это летело предупреждение, ну и соответственно, оно летело в аутпут, и на этом вся сериализация заканчивалась. Ну а кроме этого вариантов может быть сколько угодно... например, соединение с базой не произошло, заняло много времени и сервер решил не ждать ответа, любая необработанная ошибка в PHP по-сути может в это вылиться, если она привела к тому, что AMF сервер что-то не то записал в аутпут. Элементарно кто-то где-то поставил echo 'foo'. И если эта строчка выполняется, то ответ уже не прийдет.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 9
|
Спасибо, попробуем!
Сейчас вместо gateway.php подставить обычный скрипт с echo. На прямую из оперы открывается без проблем, всегда четко независимо от частоты запросов. Но из флеша запросы валятся периодически также, ответа тупо нет (вообще). Создается впечатление что ошибка всё-таки на клиенте и запросы до сервера просто не доходят. Либо в амфхпхп есть хитрый параметр таймаута отправки запроса... Добавлено через 16 минут Проверил access.log - похоже при ошибке запрос просто не доходит до сервера =( То есть проблема 99% на клиенте. И запрос 1 единственный проходит, точнее не проходит... Добавлено через 7 часов 7 минут В общем сделали голое совершенно приложение со следующим содержанием: package { import flash.display.Graphics; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import flash.net.NetConnection; import flash.net.Responder; import flash.text.TextField; /** * ... * @author Gene Pavlovsky */ public class Main extends Sprite { private var btnLogin:MovieClip; private var txtResponse:TextField; private var connection:NetConnection; private var responder:Responder; private var responder2:Responder; public function Main():void { if (this.stage) this.init(); else this.addEventListener(Event.ADDED_TO_STAGE, this.init); } private function init(e:Event = null):void { this.removeEventListener(Event.ADDED_TO_STAGE, this.init); this.btnLogin = new MovieClip(); this.btnLogin.buttonMode = true; var g:Graphics = this.btnLogin.graphics; g.beginFill(0xff0000); g.moveTo(0, 0); g.lineTo(100, 0); g.lineTo(100, 20); g.lineTo(0, 20); g.lineTo(0, 0); g.endFill(); this.addChild(this.btnLogin); this.txtResponse = new TextField(); this.txtResponse.multiline = true; this.txtResponse.width = 400; this.txtResponse.height = 600; this.txtResponse.y = 30; this.addChild(this.txtResponse); this.btnLogin.addEventListener(MouseEvent.CLICK, onLoginClick); this.responder = new Responder(onResult, onFault); this.connection = new NetConnection(); this.connection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus); this.connection.connect('http://dev.arigama.ru/test/test.php'); this.onLoginClick(); } private function onNetStatus(e:NetStatusEvent):void { this.txtResponse.appendText('\nNet status:' + '\ncode=' + e.info.code + '\nlevel=' + e.info.level); this.txtResponse.scrollV = this.txtResponse.maxScrollV; } public function onLoginClick(e:MouseEvent = null):void { this.txtResponse.appendText('\nlogin() '); this.txtResponse.scrollV = this.txtResponse.maxScrollV; this.connection.call('AuthService.login', this.responder, 'user', 'pass'); } private function onResult(result:Object):void { var message:String = 'success'; this.txtResponse.appendText(message); this.txtResponse.scrollV = this.txtResponse.maxScrollV; } private function onFault(status:Object):void { var message:String = ('description' in status) ? status.description : status.toString(); this.txtResponse.appendText('\nFault: ' + message); this.txtResponse.scrollV = this.txtResponse.maxScrollV; } } } Протестить можно тут http://dev.arigama.ru/test/test.swf, кликая на красную кнопку (но ошибка есть не на всех компах). Обычно будет выдавать BadVersion и иногда Failed. Есть идеи как это вылечить и в чем может быть дело? Добавлено через 19 часов 34 минуты $100 на кошелек - тому, кто поможет решить проблему ![]() Добавлено через 67 часов 30 минут Неужели никто не сталкивался с подобным? ( Последний раз редактировалось Arigama; 03.06.2011 в 20:24. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 9
|
Разобрались. Всё дело в антивирусах.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 04:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|