我用“C”编写了一个程序,我想用php执行它,我试图使用php_exec函数,但它不起作用。为了更具体地解决我的问题,我会告诉你一些细节。这个程序用于使下载速度更快,简而言之,用户将进入一个网页,一个放置他们的直接链接,然后提交他们的链接,从我的服务器直接链接,这里的问题是“我怎么能让用户使用它,有没有相当于php_exec?“因为我认为如果很多用户在同一时间发送他们的链接,php_exec不起作用,我也想知道,这会伤害我的服务器吗? 谢谢!
答案 0 :(得分:3)
您可能不希望在这种情况下使用exec
,因为它等待执行的程序完成后会阻止完整的脚本。
PHP Documentation告诉您以下内容:
注意:如果使用此功能启动程序,为了使程序在后台继续运行,程序的输出必须重定向到文件或其他输出流。如果不这样做将导致PHP挂起,直到程序执行结束。
但是,您可能希望将链接添加到队列(可能是数据库)并不时执行cron作业,然后下载存储在队列中的文件。
excellent answer还有另一个类似的问题。
答案 1 :(得分:1)
// Start your 'downloader'
$handle = popen('/path/to/executable 2>&1', 'r');
// While it's generating output, print it to the screen
while (!feof($handle)){
echo fread($handle, 2096);
}
// Close the process handle
pclose($handle);
此将允许多个用户同时使用它。每个PHP进程都会分配它自己的/path/to/executable
副本,并将后台进程的输出刷新到用户屏幕。