2012-07-08 109 views
0

我已经写了一个带“C”的程序,我想用php来执行它,我尝试使用函数php_exec,但它不起作用。为了更具体地解决我的问题,我会告诉你一些细节。这个程序是用来使下载更快,简而言之,用户将进入到一个网页,一个把他们的直接链接,然后提交他们的链接,从我的服务器有一个直接的链接,这里的问题是,“我怎么能让用户使用它,是否有任何相当于php_exec?“因为我认为,php_exec不起作用,如果许多用户在同一时间发送他们的链接,我也想知道,这可能会损害我的服务器? 谢谢!PHP:在后台多次执行一个程序,一次

回答

3

在这种情况下,您可能不想使用exec,因为它会一直等到执行完的程序完成后阻止完整的脚本。

PHP Documentation告诉你以下几点:

注:如果程序开始使用此功能,以便它继续在后台运行,该程序的输出必须重定向到一个文件或另一个输出流。否则会导致PHP挂起,直到程序执行结束。

但是,您可能希望将链接添加到队列(也许是数据库),然后每隔一段时间执行一次cron作业,然后下载存储在队列中的文件。

另一个类似的问题与excellent answer

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,并且将启用将后台进程的输出刷新到用户屏幕。