通知Ajax/Javascript后台PHP已经完成
Notify Ajax/Javascript that background PHP has completed
好吧,情况很简单明了:
-
在页面A上:我们执行一个ajax请求(比如对
intermediate.php
),它启动一个后台进程,比如back.php
interm.php
返回back.php
一直工作到完成,同时在数据库中更新进度
那么,页面A怎么会收到back.php
已经完成的通知呢?
(例如,我曾想过每隔1-2秒向脚本发出一个ajax请求,检查数据库中back.php
的进度,但这似乎很奇怪,而且肯定没有效率…)
有什么想法吗?
您可以使用长轮询或短轮询技术,这很常见,也不那么奇怪。它确实会发出很多不必要的请求,但它是最简单、最受支持的方法。
第二种方法是使用网络套接字。现在,到目前为止,通过html5的网络套接字通常不受支持,但另一种选择是使用一个库来处理其他方法的回退,如flash,或者如果您的浏览器/设备不支持以前的方法,则使用长轮询。Socket是一个非常好的实时通信库。IO。它允许许多不同的实时或接近实时的实现,它还允许您选择要使用的通信方法。一些基于云的web服务(如Paas)并不广泛支持web套接字。图书馆将通过让你选择或强制使用一种特定的通信方法来绕过这一点:网络套接字、闪存套接字、长轮询等
但是,由于您使用php,您可以尝试以下操作:https://github.com/lemmingzshadow/php-websocket
- http://www.htmlgoodies.com/html5/other/create-a-bi-directional-connection-to-a-php-server-using-html5-websockets.html#fbid=8Pw-Juo8eHG
- 方法略有不同
- http://www.gamedev.net/topic/613642-socketio-php-mysql/
- http://devzone.zend.com/209/writing-socket-servers-in-php/
- socket.io+php+在这个时候这是一个现实的解决方案吗
尽管正如在其中一些网站上提到的那样,将websockets与php一起使用并不像node.js或twisted python那样简单。但尽管如此,它还是可以实现的,并且在一定程度上确实有效。我发现有一个node.js后端来做实时的事情要比试图强制使用一种不应该以这种方式工作的技术容易得多。
您基本上要查找的是Comet。这里有一个很好的线索:
将comet与PHP结合使用?
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- 将PHP变量传递给jQuery时遇到问题
- 通知Ajax/Javascript后台PHP已经完成
- 后台 PHP/JS 中的 HTTP 身份验证
- 使用 JavaScript 确认对话框在后台进行 PHP 调用
- 如何调试在后台被动运行的PHP
- PHP Javascript:关闭后台调用父窗口的弹出窗口
- 在后台PHP中下载外部文件
- 我的后台php脚本需要执行javascript.怎样
- 使用PHP+jQuery在后台更新JavaScript变量
- 是否可以通过AJAX调用执行后台PHP服务器任务,该任务不会锁定您的网站
- PHP后台进程类似于Nodejs
- 尝试在链接单击时使用 ajax 在后台打开 php 文件
- 使用jQuery在后台运行PHP脚本
- 在后台使用ajax调用PHP函数
- 在PHP后台运行任务,即使在用户退出后
- javascript中的PHP后台
- PHP后台通知
- 如果使用 jquery 进行会话检查在后台失败,如何重定向索引.php页面
- 使用 id 从表中删除特定行,并使用 Jquery Ajax php mysql 在后台刷新同一表