python程序网页打开运行_PHP如何运行从PHP网页调用python程序的.sh脚本

为什么你想在10分钟内有一个web请求?PHP根本就不适合于此。我见过一些backoffice进程,例如,生成要下载的文件,需要那么长时间甚至更长的时间才能完成,用户可以等待它,但是可以肯定的是,这个进程可能会因为很多原因(硬件限制、配置限制、网络故障等)而死亡,甚至更多,在共享服务器中,服务器会明确地不管你的配置是什么,你的进程是什么。在

在专用或VPS中,当然可以修改指令并允许脚本永远运行,但问题不在于如何执行,而是是否需要这样做。可能是的,我不认为这是绝对禁止的做法,但可能不是。备选方案可以是:让一个cronjob定期运行您的sh。当有web请求时,您可以提供预先计算的数据。在

如果你不想让它生成太频繁,你可以让它经常运行,但检查它是否真的要继续运行,可能是检查数据库或文件,然后当有一个来自php的请求时,你更改数据库字段或文件的值,这样cron就知道它必须运行了。在

让php启动sh,但是在一个异步线程中,因此php执行程序以中间方式结束,通知用户正在处理数据,并且实际进程在后台运行

这是一种非常常见的方法,你可以在很多网站上看到它,例如在你的服务器上,如果你请求一些重的东西,他们会生成它并在它准备好时通知你。或者在facebook上,当你想备份你的数据时,你也可以这么做。此外,商业智能系统,以及那些分析数据的系统,使用后台进程而不是生成预先计算的数据,这样用户进程可以是轻量级的。在

对于一个新的进程来说,这是一个需要经常使用的进程,它需要一个新的进程来执行。在

有了这一点,你可以得到一个更可靠的系统,同时也将两个用户同时在不同计算机上分析相同数据的机会降到最低,这意味着两个过程需要10分钟才能得到相同的数据。在

更新

如果你真的不需要让用户实时看到这个过程的结果,那就更容易了。我不得不说,一个像crons这样的人在系统成长的时候,帮助你保持程序的有序性和可控性。但是如果您现在不想这样做,您可以尝试直接从php启动后台进程。试试这个代码(我很多年前就用过了,但我想它会管用的)。适用于unix和windows服务器。在/**

* execute $cmd in the background without PHP waiting for it to finish

*/

function execInBackground($cmd) {

if (substr(php_uname(), 0, 7) == "Windows"){

pclose(popen("start /B ". $cmd, "r"));

}

else {

exec($cmd . " > /dev/null &");

}

}

所以,要启动你的命令,你必须:

^{pr2}$

当然,由于它是在后台线程中运行的,所以您不能直接知道进程何时完成,所以您必须在sh脚本的末尾包含一些附加的操作,例如使用可能需要的通知进程启动另一个php,例如发送电子邮件、更新数据库等等。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值