我有一个 PHP 进程,它做了很多事情,我想在处理请求时向调用它的 Flash 客户端发送反馈。但是,由于我正在侦听 COMPLETED 事件,直到 PHP 完成执行(此时所有缓冲消息同时到达),我才得到反馈。
我尝试使用 PROGRESS 事件,但这似乎不起作用(除非我没有正确使用它)。
在 PHP 方面有什么我可能会遗漏的东西吗?还是 Flash 根本不是为了在常规 URLRequest 中从服务器获取更新而设计的……我可以为此使用套接字,但我宁愿不必这样做!
我有一个 PHP 进程,它做了很多事情,我想在处理请求时向调用它的 Flash 客户端发送反馈。但是,由于我正在侦听 COMPLETED 事件,直到 PHP 完成执行(此时所有缓冲消息同时到达),我才得到反馈。
我尝试使用 PROGRESS 事件,但这似乎不起作用(除非我没有正确使用它)。
在 PHP 方面有什么我可能会遗漏的东西吗?还是 Flash 根本不是为了在常规 URLRequest 中从服务器获取更新而设计的……我可以为此使用套接字,但我宁愿不必这样做!
取决于您要求 PHP 在后端做什么。如果您要发送 json 或 xml 数据,您可以随时调用flush
以更频繁地向客户端发送当前输出缓冲区。
您是否尝试过在使用 PHP 的flush()函数定期发送输出时使用 PROGRESS 事件,而不是在 PHP 脚本完成执行时发送输出。
可以办到。关键是flash.net.URLStream。我正在以这种方式使用它,(代码不完整,但我想你明白了):
var stream:URLStream = new URLStream();
var request:URLRequest = new URLRequest("yourUnbufferedPHPURLhere?rand="+Math.random());
stream.addEventListener(ProgressEvent.PROGRESS, progressHandler);
stream.load(request);
function progressHandler(event:Event):void{
trace("PROGRESS: "+stream.readUTFBytes(stream.bytesAvailable));
}