Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.06.2011, 11:50
Arigama вне форума Посмотреть профиль Отправить личное сообщение для Arigama Найти все сообщения от Arigama
  № 1  
Ответить с цитированием
Arigama

Регистрация: Dec 2010
Сообщений: 9
Attention AMFPHP NetConnection.Call.Failed

Используем связку 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), не зависимо от скорости интернета. Возникает не стабильно, то есть то нету. На своем компьютере могу воспроизвести просто открыв игру в Опере. На других Опера не гарантирует возникновение ошибки.

Кто-нибудь сталкивался с подобным? Есть мысли как побороть проблему? Каждый день теряем юзеров из-за этой ошибки... помогите плз.

Старый 03.06.2011, 12:29
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Включите все ошибки, и, очень важно, предупреждения. Было когда-то что-то похожее изза того, что где-то в AMFPHP делался foreach на пустом массиве. За это летело предупреждение, ну и соответственно, оно летело в аутпут, и на этом вся сериализация заканчивалась. Ну а кроме этого вариантов может быть сколько угодно... например, соединение с базой не произошло, заняло много времени и сервер решил не ждать ответа, любая необработанная ошибка в PHP по-сути может в это вылиться, если она привела к тому, что AMF сервер что-то не то записал в аутпут. Элементарно кто-то где-то поставил echo 'foo'. И если эта строчка выполняется, то ответ уже не прийдет.
__________________
Hell is the possibility of sanity

Старый 03.06.2011, 13:11
Arigama вне форума Посмотреть профиль Отправить личное сообщение для Arigama Найти все сообщения от Arigama
  № 3  
Ответить с цитированием
Arigama

Регистрация: Dec 2010
Сообщений: 9
Спасибо, попробуем!

Сейчас вместо gateway.php подставить обычный скрипт с echo.
На прямую из оперы открывается без проблем, всегда четко независимо от частоты запросов.
Но из флеша запросы валятся периодически также, ответа тупо нет (вообще).
Создается впечатление что ошибка всё-таки на клиенте и запросы до сервера просто не доходят. Либо в амфхпхп есть хитрый параметр таймаута отправки запроса...

Добавлено через 16 минут
Проверил access.log - похоже при ошибке запрос просто не доходит до сервера =(
То есть проблема 99% на клиенте. И запрос 1 единственный проходит, точнее не проходит...

Добавлено через 7 часов 7 минут
В общем сделали голое совершенно приложение со следующим содержанием:
Код AS3:
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;
		}
	}
}
При многократном клике 1 из 20 запросов в среднем выдает Failed в Опере (на остальные - BadVersion, это норм тк подключение идет не к amfphp). Первый запрос проходит как правило нормально (бывает и фейлится, но очень редко).
Протестить можно тут http://dev.arigama.ru/test/test.swf, кликая на красную кнопку (но ошибка есть не на всех компах). Обычно будет выдавать BadVersion и иногда Failed.

Есть идеи как это вылечить и в чем может быть дело?

Добавлено через 19 часов 34 минуты
$100 на кошелек - тому, кто поможет решить проблему

Добавлено через 67 часов 30 минут
Неужели никто не сталкивался с подобным? (


Последний раз редактировалось Arigama; 03.06.2011 в 20:24.
Старый 10.06.2011, 09:41
Arigama вне форума Посмотреть профиль Отправить личное сообщение для Arigama Найти все сообщения от Arigama
  № 4  
Ответить с цитированием
Arigama

Регистрация: Dec 2010
Сообщений: 9
Разобрались. Всё дело в антивирусах.

Создать новую тему Ответ Часовой пояс GMT +4, время: 04:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 04:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.