有挑战性的问题:如何在浏览器关闭以后,还让程序在后台运行??

chinawxd 2000-12-15 10:18:00
各位高手,问题是这样的:我做了一个文件a.php,里面是纯php的代码,没有html代码,这个文件需要对数据库中的超过10万条的记录进行检索,并将结果写入另一个文本文件,但是它的执行时间需要10多分钟,肯定超过了浏览器的时间限制,于是我做了另一个文件b.php,在文件中写入以下两句话:
<?
$cmdstr="nohup /usr/local/bin/./php /home/www/XXX/XXX/a.php &";
passthru($cmdstr);
?>
但是运行以后好象并没有得到想要的结果,但是如果直接在linux的环境下面执行上面的命令,是可以得到执行结果的,不知道各位高手有什么好的建议,在我用浏览器打开b.php以后,再关闭浏览器,程序a.php仍然在服务器上运行.
请高手帮忙,谢谢!
...全文
463 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bestone 2001-04-29
  • 打赏
  • 举报
回复
用这个函数可不可以,你看看:register_shutdown_function()
laotan 2001-04-07
  • 打赏
  • 举报
回复
hi
XYJ 2001-01-30
  • 打赏
  • 举报
回复
ignore_user_abort()函数
longs 2000-12-18
  • 打赏
  • 举报
回复
象system()等函数要等到这个命令运行完才返回(实际上是要等命令的输出结果),这肯定会引起PHP脚本的超时。解决的办法是把命令的输出重定向到另外一个文件或流中:

system("/usr/local/bin/order_proc > /tmp/null &");

good luck!
haitian2000 2000-12-18
  • 打赏
  • 举报
回复
不明白你为什么要用PHP?是远程管理要用吗?
HTML是无连接系统,要是直接用页面方式,别说10分钟5分钟也危险啦
我这里有几个解决方法,你可以试试!

可以用存储过程吗?快速的将数据抓出,然后存入文件,如果数据能在过期时间内取出
你就可以直接用愿程序来做!只须做个StoreProc。

可以用C来写个小程序嘛!既然会PHP,那么也差不多啦!这样放到后台让它慢慢抓吧!

实在要用PHP吗?怎么不试试用保障性高的TCPSocket连接方式?
其机制是这样的,用两个程序保障连接,一个C端,一个服务器端,
然后服务器那里的去抓数据。
chinawxd 2000-12-18
  • 打赏
  • 举报
回复
首先感谢两位的留言,我想先请问longs朋友,用exec跟用passthru有什么具体的区别吗?另外,对于peacock的建议,配置该页最久可执行的时间。可是我直接在linux的环境下面运行该程序也需要10多分钟的时间,我总不至于把浏览器的执行时间配置成10多分钟,打开后就让它一直挂在那里吧。还请大家再为我提些方案,谢谢了!
chinawxd 2000-12-18
  • 打赏
  • 举报
回复
首先感谢两位的留言,我想先请问longs朋友,用exec跟用passthru有什么具体的区别吗?另外,对于peacock的建议,配置该页最久可执行的时间。可是我直接在linux的环境下面运行该程序也需要10多分钟的时间,我总不至于把浏览器的执行时间配置成10多分钟,打开后就让它一直挂在那里吧。还请大家再为我提些方案,谢谢了!
chinawxd 2000-12-18
  • 打赏
  • 举报
回复
首先感谢两位的留言,我想先请问longs朋友,用exec跟用passthru有什么具体的区别吗?另外,对于peacock的建议,配置该页最久可执行的时间。可是我直接在linux的环境下面运行该程序也需要10多分钟的时间,我总不至于把浏览器的执行时间配置成10多分钟,打开后就让它一直挂在那里吧。还请大家再为我提些方案,谢谢了!
peacock 2000-12-15
  • 打赏
  • 举报
回复
在 php 的配置/信息里面有一个设置脚本执行时间的函数,具体情况如下:

set_time_limit
配置该页最久执行时间。

语法: void set_time_limit(int seconds);

返回值: 无

函数种类: PHP 系统功能

内容说明

本函数用来配置该页最久执行时间。默认值是 30 秒,在 php.ini 中的 max_execution_time 变量配置,若配置为 0 则不限定最久时间。当执行到该函数时,才开始计算。例如,若默认是 30 秒,而在执行到该函数前已执行了 25 秒,而用本函数改为 20 秒,则该页面最长执行时间为 45 秒。

使用实例:
我的文章搜索函数由于文章数目的增加,经常会产生超时错误,我把脚本执行时间改为200秒后情况大大缓解!
<?
set_time_limit(200);
?>

这样就可以了!
longs 2000-12-15
  • 打赏
  • 举报
回复
别用passthru,用exec试试先.

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧