我有一个发送短信的PHP脚本,问题是它需要一段时间才发送每个短信。在我的网站中,该页面将等待此脚本完成运行。我如何向用户发送短信将被发送并恢复网站的正常操作。不要等待脚本完成
不要等待脚本完成
回答
这里唯一的问题是浏览器认为它在等待脚本的更多输出,当没有任何输出时。你可以卸载到一个单独的进程,或者使用异步Web呼叫,或者你可以简单地.....
<?php
register_shutdown_function('when_alls_done');
.... // render page
exit;
function when_alls_done()
{
if ($_REQUEST['send_to_phone']) {
send_sms($_REQUEST['send_to_phone'], $_REQUEST['message']);
}
}
的网络服务器应在“退出”刷新请求,让浏览器知道响应是完整的(在此之前,PHP代码中的显式刷新将不会刷新Web服务器缓冲区,也不会导致输出被另一个块进行块编码)。
C.
取而代之或者在那里发送短信,然后您可以将它存储在某个地方(例如数据库)。然后,您可以构建额外的脚本(以PHP或其他任何您想要的方式)轮询数据库以查找SMS以发送和分派它们。根据您的操作系统,您可以通过cron或计划任务每隔x秒或几分钟运行一次。通过这种方式,您可以将耗时的任务从其页面上及时与用户进行通信。
如果你是LAMP
- 写未决短信cron作业,将查询队列(数据库),并送他们。
- 在您的脚本中将SMS添加到队列中。
- 在另一页显示他的短信的用户状态。
- 使用Ajax,您可以在后台查询最近发送的SMS的状态。只要你看到发送通知用户。
将消息放入数据库的队列中。然后在后台运行一个脚本作为cron作业来处理队列。
原则上其良好的的想法,但在实践中使用cron作业将信息出队将不能很好地扩展并且会导致额外的功能性问题。一个更好的解决方案将是一个专用的守护进程 - 以前我曾使用BSD lpd来管理一个带有自定义“打印机驱动程序”的SMS队列 - 但其他地方使用异步请求来处理这个问题 – symcbean 2010-07-28 11:35:31
要做到这一点,你可以使用ajax。 在一些按钮上按只需发送一个ajax请求到PHP文件铸造发送短信。并在屏幕上发出通知,如“发送短信!!!”并在ajax行动的响应改变'发送短信','成功!!!'...
为使用ajax你可以使用jquery .. 如果你不知道jquery评论我的视频教程...我有一些jQuery的初学者视频教程....
有一个愉快的一天!!!!!
但在发送时确保ignore_user_abort()脚本如果你去这条路线 – symcbean 2010-07-28 11:36:14
这很容易,当你知道如何:
<?php
echo 'A sms will be sent!';
fastcgi_finish_request();
// Put all your time consuming code here!
?>
- 1. 不要等待file_get_contents()完成
- 2. Scala脚本等待mongo完成任务
- 3. 让PHP等待python脚本完成
- 4. PowerShell脚本等待进程完成
- 5. 等待做shell脚本完成
- 6. PHP shell_exec等待脚本完成?
- 7. PHP shell_exec等待脚本完成?
- 8. PHP脚本是否需要等待MySql触发器完成?
- 9. 不要等待函数来完成
- 10. 程序为什么要等待schedule()完成,但不等待scheduleWithFixedDelay()?
- 11. PHP脚本等待shell脚本执行完成
- 12. 等待完成
- 13. 等待完成
- 14. jQuery完成后不等待它完成
- 15. Shell脚本 - 不要等待阅读
- 16. jQuery.when不等待完成
- 17. “等待HTTPClient.GetAsync”永不完成
- 18. 执行SQL脚本,而不是等待完成
- 19. PowerShell和FTP,脚本不会等待传输完成
- 20. PHP shell脚本不会等待完成过程
- 21. 每x秒运行一次脚本而不等待它完成
- 22. 等待webworker完成
- 23. 等待NSURLSessionTask完成
- 24. jquery,等待完成
- 25. 等待IDBCursor.onsuccess完成
- 26. 等待ExecWB完成
- 27. 等待GUI完成
- 28. WebRequest.GetResponse等待完成
- 29. 等待BackgroundWorker完成?
- 30. 等待webrequest完成
*(相关)* http://stackoverflow.com/search?q=asynchronous+php – Gordon 2010-07-28 11:29:12