失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php 异步执行脚本

php 异步执行脚本

时间:2021-08-28 05:47:26

相关推荐

php 异步执行脚本

php教程|php手册

php,异步,执行,脚本,这里,说异步,执行,php,脚

php教程-php手册

直销软件 源码,vscode生成hex文件,ubuntu删除bash,tomcat里看日志,存在爬虫,php 微服务设计,seo优化在哪里看,模板asp网站思索者,公司网站实现模板源码lzw

这里说的异步执行是让php脚本在后台挂起一个执行具体操作的脚本,主脚本退出后,挂起的脚本还能继续执行。比如执行某些耗时操作或可以并行执行的操作,可以采用php异步执行的方式。主脚本和子脚本的通讯可以采用外部文件或memcached的方式。原理就是通过exec

旅行社导航源码,vscode全局搜索不了,nas装ubuntu,tomcat关闭8005,sqlite3默认时间,灯鹭社会化登录插件安装,h5前端框架包含dojo嘛,网络爬虫特点应用场景,php李炎恢第二季,济南seo测试平台,36kr网站,网页制作后台,thinkphp 模板 日期lzw

网站源码样子,ubuntu测试硬盘读写,骷髅爬虫的体型,php 调用,seo工具 点击lzw

这里说的异步执行是让php脚本在后台挂起一个执行具体操作的脚本,主脚本退出后,挂起的脚本还能继续执行。比如执行某些耗时操作或可以并行执行的操作,可以采用php异步执行的方式。主脚本和子脚本的通讯可以采用外部文件或memcached的方式。原理就是通过exec或system来执行一个外部命令。注意:本文所述的是针对Linux环境。

在Linux下要让一个脚本挂在后台执行可以在命令的结尾加上一个 “&” 符号,有时候这还不够,需要借助nohup命令,关于nohup,可以参考/linux-nohup.html。

CLI环境和Web环境执行的操作还不太一样。先来说CLI环境,这里需要用上nohup和&,同时还要把指定输出,如果不想要输出结果,可以把输出定向到/dev/null中。现在来做一个测试,假设在一个目录中有main.php、sub1.php和sub2.php,其中sub1和sub2内容一样都让sleep函数暂停一段时间。代码如下:

//main.php./tmp.log &; exec($cmd); $cmd = ohup php ./sub1.php >/dev/null &; exec($cmd);?>//sub1.php sub2.php

上述文件中main.php是作为主脚本,在命令行中执行php main.php,可以看到main.php脚本很快就执行完并退出。在使用ps aux | grep sub命令搜索进程,应该可以在后台看到上述的两个子脚本,说明成功挂起了子脚本。

在Web环境下,执行php脚本都是Web服务器开启的cgi进程来处理,只要脚本不退出,就会一直占有该cgi进程,当启动的所有cgi进程都被占用完后就不能在处理新的请求。所以对那些可能会很费时的脚本,可以采用异步的方式。启动子脚本的方式和CLI差不多,必须要使用&和指定输出(只好是定向到/dev/null),但是不能使用nohup。例如:

/dev/null &; exec($cmd); $cmd = php PATH_TO_SUB1/sub2.php >/dev/null &; exec($cmd);?>

当在浏览器中访问该脚本文件,可以看到浏览器里面响应完成,同时使用ps命令查看后台可以看到sub1和sub2脚本。

注意上述例子中如果php命令不在PATH中,需要指定命令完整的路径。推荐使用完整路径,特别是在Web下。

原文地址:php 异步执行脚本, 感谢原作者分享。

如果觉得《php 异步执行脚本》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。