exec("nohup $[cd $basePath && zip -qr $dirTmp/$filename.zip ./*
] > /dev/null 2>&1 &"); //压缩文件
命令如上,但是发现并没有异步执行,有没有什么办法可解决,最好不是另写一个 shell 脚本。
1
2kCS5c0b0ITXE5k2 2019-07-18 09:23:28 +08:00
shell_exec
|
3
leoleoasd 2019-07-18 09:29:07 +08:00
popen?
|
5
haiyan 2019-07-18 09:34:07 +08:00
换一个思路,建一个专门处理执行 shell 的 php,在你的 php 去 curl 这个执行命令的 php,设置超时一秒
|
6
hteen 2019-07-18 09:42:36 +08:00
|
8
linxl 2019-07-18 10:08:01 +08:00
没 log 吗, 你把 > /dev/null 改成输出到某个文件看看?
|
10
linxiaojialin 2019-07-18 10:12:31 +08:00
是 CGI 还是 CLI 呢?
nohup 只是忽略 SIGHUP 信号,挂起在后台执行,不是异步执行,仍在当前线程( CGI )/进程( CLI )内。 很多种思路,例如,1.PHP-CLI 下可开启新的线程 /进程去处理; 2.启动一个 PHP-CLI 进程专门负责监听,其他进程 /CGI 线程中需异步执行的丢到监听进程中。 |
11
2kCS5c0b0ITXE5k2 2019-07-18 10:31:47 +08:00 via iPhone
不行就用 go 写个 rpc 服务 php 去调用
|
12
AngryPanda 2019-07-18 13:03:15 +08:00 via Android 1
setsid 了解一下
|
13
tailf 2019-07-18 13:30:39 +08:00
PHP 本身是同步的,想支持异步需要专门实现,例如 curl 可以实现多个请求并发,或者使用 swoole。
|
14
whahuzhihao 2019-07-18 13:58:37 +08:00
pclose(popen('命令', 'r'));
标准做法不是 popen 去处理吗 |
15
v23x 2019-07-18 15:42:10 +08:00
php 搞异步 劝你换一个语言....
|
16
AlanAlbert 2019-07-18 16:04:26 +08:00 via Android
创建守护进程?
|
17
iyaozhen 2019-07-18 16:17:09 +08:00 via Android
不了解$[]语法干啥的。
但 zip -qr $dirTmp/$filename.zip ./* 应该是阻塞了,你这后面加上&,后台运行 |
19
hetaoo 2019-09-05 19:19:26 +08:00
楼主最后解决了吗?我也碰到一样的问题了
|