当前位置:网站首页>PHP实现异步执行程序
PHP实现异步执行程序
2022-08-04 05:25:00 【eleven_-11】
PHP实现异步执行程序
需要异步执行的原因
在进程执行一个脚本程序的时候,往往需要等待脚本程序执行结束后返回结果,才能往下执行,如果是耗时操作可能导致超时的情况
方法
popen函数
使用
popen.php
$sCmd = "php sleep.php";
file_put_contents("echo", "开启popen时间:".date("Y-m-d H:i:s", time()) . "\n", FILE_APPEND);
$hResource = popen("$sCmd &", "r");
pclose($hResource);
file_put_contents("echo", "执行popen时间:".date("Y-m-d H:i:s", time()) . "\n", FILE_APPEND);
sleep.php
sleep(60);
file_put_contents("echo", "sleep进程结束时间:".date("Y-m-d H:i:s", time()) . "\n", FILE_APPEND);
echo文件
由此可以看出,popen是异步执行的函数
注意
若需要执行的异步程序有输出,则不能这么写
比如sleep.php
<?php
for($i = 0;$i<5;$i++){
echo "$i\n";//输出
file_put_contents("/root/a.txt", "$i\n", 8);
sleep(1);
}
若popen.php内容如下
<?php
pclose(popen("php sleep.php", "r"));
}
则没有a.txt,因为popen打开了一个通道,如果有内容输出时,而pclose又关闭了通道,因此异步脚本未能完全执行,以上写法只有当异步执行的脚本没有输出才可以使用。
所有popen.php内容需要修改为如下
<?php
$handle = popen("php sleep.php", "r");
sleep(10);//或者其他检测sleep.php是否执行完毕的流程
pclose($handle);
}
边栏推荐
- Embedded system driver primary [4] - under the basis of character device driver _ concurrency control
- As soon as flink cdc is started, the CPU of the source Oracle server soars to more than 80%. What is the reason?
- 符号表
- 读者让我总结一波 redis 面试题,现在肝出来了
- 力扣题解8/3
- 9. Dynamic SQL
- JS basics - forced type conversion (error-prone, self-use)
- How to view sql execution plan offline collection
- 8.03 Day34---BaseMapper query statement usage
- [Cocos 3.5.2]开启模型合批
猜你喜欢
随机推荐
Canal mysql data synchronization
5个开源组件管理小技巧
8. Custom mapping resultMap
文献管理工具 | Zotero
How to view sql execution plan offline collection
idea设置识别.sql文件类型以及其他文件类型
程序员也应了解的Unity粒子系统
MySql data recovery method personal summary
Wwise入门和实战
想好了吗?
4.2 Declarative Transaction Concept
如何将 DevSecOps 引入企业?
入坑软件测试的经验与建议
力扣题解8/3
Cannot read properties of null (reading ‘insertBefore‘)
Can 't connect to MySQL server on' localhost3306 '(10061) simple solutions
渗透测试(PenTest)基础指南
LCP 17. 速算机器人
Write golang simple C2 remote control based on gRPC
Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法









