编程社区 » php编程 » 网页上执行一个php,然后关闭页面,能否让该后台程序还是能运行,每个5秒发封邮件

网页上执行一个php,然后关闭页面,能否让该后台程序还是能运行,每个5秒发封邮件


czcty



 发表:

网页上执行一个php,然后关闭页面,能否让该后台程序还是能运行,每个5秒发封邮件


网页上执行一个php,然后关闭页面,能否让该后台程序还是能运行,每个5秒发封邮件


idealabc
回复:

网页打开可心,关闭就不能了.

xuzuning
回复:

可以,但是很危险

wasuka
回复:

ignore_user_abort(true)

wasuka
回复:

ignore_user_abort(true)

yueliangdao0608
回复:

do...
sleep(5);
do...

li1229363
回复:

后台运行php程序……可能?这不是扯呢么~

iasky
回复:

那要看apache等服务器的问题

czcty
回复:

谢谢大家

to xuzuning(唠叨) :为什么很危险?
----引用-----
可以,但是很危险

xuzuning
回复:

通过设置php的运行状态可以实现关闭浏览器后php程序继续运行所以说——可以
你需要“每个5秒发封邮件”,并没有说明程序是否会自行终止。如果程序一直运行的话,势必有一个死循环。并且这个程序无法通过php手段将其终止,除非重新启动web服务。这个程序每被执行一次,就将在系统中产生一个永久的进(线)程,势必将占用大量系统资源而导致系统因资源枯竭而崩溃,所以说——很危险

stals
回复:

楼主的问题恐怕只有用cgi方式开命令行执行了,在浏览器中目前无法实现。

czcty
回复:

to xuzuning(唠叨) :
那么程序可以自己退出把自己杀死,比如我设置一个变量,变量递增,到发到100封邮件,变量=100,就退出(执行exit),这样行吗?

xuzuning
回复:

可以!
因为没有显示窗口的提示,调试时要格外小心

ryl
回复:

nohup php -q 文件名 &
不就在不挂起一直执行
程序要死循环就是一直执行了

visam168
回复:

唠叨大哥就是强啊。。。

zairwolf
回复:

感觉楼上们说的玄了。

可以关闭页面而继续执行程序。只要让程序不要有任何输出即可,另外要保证set_time_limit(0)。

至于中断,教楼主一个小技巧:在你的循环中进行一下是否存在一个文件(比如stop.txt)的检测,如果存在,就exit。这样你可以随时通过临时建一个文件,让它中断退出。

至于占用服务器资源,我想楼主肯定会先在自己电脑上测试吧。另外,即使放在服务器上这样运行, 唠叨老大说的“并且这个程序无法通过php手段将其终止”也是不完全的,我前面说的这个文件检测法就可以给死循环进行中断。

Dereky
回复:

同意 zairwolf(君子兰) 的观点
页面打开与否与php有没有在运行毫无关系,可以这样认为,你打开一个页面,只是为了去触发这个页面的php脚本去执行,当然你也可以用其他的方法,file_get_contents soap 都行,只要保证该脚本执行起来就可以了
脚本开始执行以后,你所“看到”的前台页关不关和程序运行不运行已经毫无关系了

hanpoyangtitan
回复:

不懂,听课中

gyc800
回复:

不懂,学习

czcty
回复:

非常感谢大家的指点。
又一个问题:
我在运行下面代码:
sleep.php
<?
set_time_limit(0);
ignore_user_abort(true);
for ( $i=0;$i<20;$i++){
///
处理发邮件事务
///
sleep( 5 );
}
exit;
?>

点击它,IE进度条会一直等待中,虽然页面关闭后程序会继续运行,但是会给人误解,有什么办法执行这个程序后立刻进入一个友好的界面,提示执行完毕.

lee3f
回复:

用AJAX吧.
在javascirpt做循环,不断访问你的PHP程序.界面怎样设计都行.

gzty
回复:

学习中

czcty
回复:

用AJAX的话,页面关闭,事务就断了,事情还没有完成呢。

ckc
回复:

用另外的方法实现吧
在服务器上跑一个后台程序,定期扫描数据库,收到命令就开始工作

gozone
回复:

WEB页面需要一个来自客户端的请求才会运行吧 关掉IE服务器还能响应么?

caotian2000
回复:

对,是可以的!

我以前做过抓取程序关了网页也是可以执行的

lwter
回复:

自已写个程序,在服务器上运行,让程序每5秒钟fetch该php网页。当然这个服务器是你自己的服务器。

edwardrong
回复:

mark

peterdoo
回复:

意图是……
嘿嘿……

abinleo
回复:

页面里做个隐藏域,域的地址指向你的那个php文件,然后用ajax写个程序,每5秒刷新一次那个域就行了.

w_s_w
回复:

解决的办法是:自己用C语言写一个模块,加载到APACHE服务器中,可能这是最有效的办法!

xcyxl
回复:

用c写模块,牛~~

panzhiqi
回复:

用AJAX 实现
点击以后让隐藏帧调用sleep.php
显示帧 显示友好的信息就可以了
sleep.php
<?
set_time_limit(0);
ignore_user_abort(true);
for ( $i=0;$i<20;$i++){
///
处理发邮件事务
///
sleep( 5 );
}
exit;
?>

czcty
回复:

谢谢!大家。


相关文章
Smarty的路径问题
如何导出mysql的数据到sql server 或access???是新网的mysql空间
php 里可以定义变长数组吗
php事務處理
一道 很有意思的题。
上海招制作网站的人员!会php,asp两种脚本
详细帮助解释一下函数的功效,如何不同?
何时setcookie的疑问
如何以一位图作背景,读文本文件内容显示填到位图中
php操作excel文件
请教一下:phpbb 论坛本机可以访问,从另外一台机子访问论坛时就不行。是什么原因?
帮忙看看mysql的编码
热门文章
哪儿能获得phpMyAdmin的用户名和密码?
求助Call to undefined function mssql_connect()
网页上执行一个php,然后关闭页面,能否让该后台程序还是能运行,每个5秒发封邮件
如何修改js里面的document.referrer值
date_default_timezone_set使用
php操作excel文件
alert(document.1.aa.value)提示undefined,其中1是form表单的name,急急急
求教PHP+APACHE+ORACLE的连接问题
发布测试版AJAX类JoAjax 1.0
谁需要 eXtremePHP 的手册
初学PHP者的困惑,希望大家帮帮我,否则我学不下去了!!!!
使用SharePoint.OpenDocuments.2在线编辑word文件,为什么不能保存到服务器上??

编程社区 2008 浙ICP备09013498号
© TinyBBS.cn
编程好站连接:codeproject sf.net codeplex