Windows下Apache能否让一个PHP文件每隔几秒执行一次

gnefgnehz 2011-09-14 07:37:21
请允许我问这个很白痴的问题,不过我琢磨了很长时间也没想到一个很好的解决办法。
背景是这样的:我需要一段PHP代码去定期的对数据库的数据进行操作,并把结果保存起来。假如只是在用户请求的时候去执行这段代码的话,用户的响应时间会很长,用户体验极差。所以我希望能有一个程序专门来执行这段代码。开始的时候想到用windows的计划任务来解决,但是由于执行的频率非常高,用计划任务显然不合适。
所以希望高人指点,若能给个简单的例子就再好不过了,谢谢!
...全文
457 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏之冰雪 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yunprince 的回复:]

#11 这招狠
[/Quote]
绝对赞同11楼这招狠!^^
何牧晗 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 qvbfndcwy 的回复:]

有缺点啊,如果访问了两次,就执行两遍啊。引用 18 楼 abin30 的回复:
写测试脚本:
<?php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=30;// 每隔一定时间运行
do{

//这里是你要执行的……
[/Quote]

那你可以加个判断语句

<?
$FILE = 'doprogram.lock';
if(file_exists($FILE)) exit(); //如果文件存在则退出执行
else file_put_contents($FILE); //否则添加锁定文件,防止多次运行
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=30;// 每隔一定时间运行
do{
....
李睿_Lee 2011-10-13
  • 打赏
  • 举报
回复
用户请求的执行这段代码也可以的啊,你可以通过异步调用,不一定要在本页面里执行的。这样用户体验就没有影响了。
abin30 2011-10-13
  • 打赏
  • 举报
回复
这种操作应该是定时刷新功能的,多执行几次应该没有关系吧..

如果不行呢,也可以单独定义个文件保存个时间戳表示记录执行时间。。 每次执行的时候,判断一下就可以。。

qvbfndcwy 2011-10-13
  • 打赏
  • 举报
回复
有缺点啊,如果访问了两次,就执行两遍啊。[Quote=引用 18 楼 abin30 的回复:]
写测试脚本:
<?php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=30;// 每隔一定时间运行
do{

//这里是你要执行的代码
$msg=date("Y-m-d H:i:s") ." -执行了~ \n……
[/Quote]
abin30 2011-10-13
  • 打赏
  • 举报
回复
写测试脚本:
<?php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=30;// 每隔一定时间运行
do{

//这里是你要执行的代码
$msg=date("Y-m-d H:i:s") ." -执行了~ \n";
file_put_contents("log.log",$msg,FILE_APPEND);

sleep($interval);// 等待5分钟
}while(true);


然后直接就可以在命令行里边执行
c:\php5\php.exe test.php

可以把这个加入开始开机运行 或加入到系统服务中,就可以自动运行了
zhouzhipen 2011-10-12
  • 打赏
  • 举报
回复
WINDOWS平台上有不计其数的定时执行的工具,随便找一个,用命令行方式运行那个PHP文件,什么事都搞定。
wbandzlhgod 2011-10-12
  • 打赏
  • 举报
回复
up +1
tianyaxiao 2011-10-10
  • 打赏
  • 举报
回复
PHP不仅仅是是一个WEB开发工具,也是一个优秀的CLI工具,所以不要老用WEB开发的方式思考问题。采用PHP-CLI一切问题都解决了,什么CRON,什么计划任务,什么JS云云通通都可以扔掉了。
lizhong8532 2011-10-09
  • 打赏
  • 举报
回复
定时执行 有点耗服务器资源吧。可以采用服务器推送,当有更新的时候服务器主动把最新信息送到客户端。这样就不就既省事,又不耗资源了吗
yunprince 2011-10-09
  • 打赏
  • 举报
回复
#11 这招狠
rex100 2011-10-09
  • 打赏
  • 举报
回复
用js刷新一个页面。

设置浏览器的主页为这个页面。

把浏览器加到windows的开机启动里。



ghj902260 2011-10-08
  • 打赏
  • 举报
回复
我和楼上的意见一样,可以使用js的吧???
客户端的事情尽量交给客户端来处理。
js不单单是特效语言
hncsl 2011-10-04
  • 打赏
  • 举报
回复
使用js,使网页定时刷新,在网页内读取数据库。只要网页打开,就可以一直运行。而且占用资源少
uncle_bacon 2011-09-27
  • 打赏
  • 举报
回复
路过,收藏了。
gnefgnehz 2011-09-26
  • 打赏
  • 举报
回复
谢谢各位的回答~
willhuo 2011-09-26
  • 打赏
  • 举报
回复
你可以做一个包含文件,同解一楼,然后在需要的地方包含进这个文件,既省去了不用的时候占用资源,而且随着调用而运行,多好啊,关闭网页之后还可以继续运行。只要任何动作都可触发就可以了吧。用load触发比较好。
ohmygirl 2011-09-22
  • 打赏
  • 举报
回复
多种方法:
1.用sleep()函数实现类似linux contab定时执行的功能。

2.linux系统直接在crontab中添加定时任务。
黑色渐变 2011-09-22
  • 打赏
  • 举报
回复
linux有cron,很好使。

windows下如果mysql5.1以上,有Event Scheduler,不过没用过,LZ自己查下资料
MMDD0827 2011-09-15
  • 打赏
  • 举报
回复
同求,可以永久保存的而不是重启之后就没有了的方法……
加载更多回复(2)

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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