Home > Backend Development > PHP Tutorial > 【在线求助】关于php定时器问题

【在线求助】关于php定时器问题

WBOY
Release: 2016-06-23 14:11:01
Original
1138 people have browsed it

新手求助关于php定时器问题:
我想在php上写个定时器,但php貌似不支持这个功能, 在网上查了很多朋友的方法,但都不行, 
我现在想通过一个死循环来实现,但也不行,求助给我大哥大姐了。。。

<?php	ignore_user_abort(true);	set_time_limit(0); 	function test(){		echo "测试定时器!";	}		do{		sleep(3);//		test();	}while(1) ?>
Copy after login


回复讨论(解决方案)

你想要干什么?

你想要干什么? 我想通过php获取页面的一个session值,如果页面关闭了或该session值失效了就执行一条SQL语句,修改当前用户的登录状态

很遗憾 php 没有定时器

很遗憾 php 没有定时器 是啊,我知道php没有定时器,所以我想通过别的方法来实现啊

那就是:明知不可为而为之,?!?

世上无难事,只怕有心人

php一般是结合linux的cron做定时batch的

jquery延时吧,结合 ajax。

crontab/计划任务

新手求助关于php定时器问题:
我想在php上写个定时器,但php貌似不支持这个功能, 在网上查了很多朋友的方法,但都不行, 
我现在想通过一个死循环来实现,但也不行,求助给我大哥大姐了。。。
PHP code?123456789101112 其实你的方法是可行的  值是不应该用echo来表现   因为PHP在运行过程中echo的信息是存放在缓冲区的  在程序运行完前并不会输出   所以你看不到效果
你可以把echo换成数据库操作语句   比如没5秒添加1条数据   你再看一下有没有用

还有  测试时最好不要加ignore_user_abort   这个会后台运行  即使关闭浏览器仍然会继续执行   除非从进程中停止

引用 楼主 fff32165 的回复:新手求助关于php定时器问题:
我想在php上写个定时器,但php貌似不支持这个功能, 在网上查了很多朋友的方法,但都不行, 
我现在想通过一个死循环来实现,但也不行,求助给我大哥大姐了。。。
PHP code?123456789101112 我把echo "测试定时器"改为 echo "<script>alert(\"测试定时器\");</script>"; 行不?如果没有弹出来的话我执行一条SQL语句它会去执行么?这个马上试下

引用 1 楼 cainiaophper 的回复:你想要干什么?我想通过php获取页面的一个session值,如果页面关闭了或该session值失效了就执行一条SQL语句,修改当前用户的登录状态

这个想法貌似不行啊

应该这样做  在数据库的用户表中键一个有效时间字段  通过这个字段的数据和当前时间做对比   超过一定时间即不在线
同时页面上写一个js定时器   定时ajax访问服务器更新有效时间字段

引用 2 楼 fff32165 的回复:引用 1 楼 cainiaophper 的回复:你想要干什么?我想通过php获取页面的一个session值,如果页面关闭了或该session值失效了就执行一条SQL语句,修改当前用户的登录状态

这个想法貌似不行啊

应该这样做  在数据库的用户表中键一个有效时间字段  通过这个字段的数据和当前时间做对比   超过一定时间即…… 如果是用JS定时器的话,那我网页关闭了JS不就失效了么?

网页关闭有效时间就不会更新了呀
比如你定时是1分钟访问一次  那么有效时间和当前时间的时间差超过1分钟的用户自然就不在线

网页关闭有效时间就不会更新了呀
比如你定时是1分钟访问一次  那么有效时间和当前时间的时间差超过1分钟的用户自然就不在线 其实我要的效果就是网页非法关闭了,例如客户端断电了,网页关了之后 我要执行一条SQL语句更改用户的登录状态,

其实我要的效果就是网页非法关闭了,例如客户端断电了,网页关了之后 我要执行一条SQL语句更改用户的登录状态,
客户端网页的关闭状态  服务端时无法获取的   除非你们用socket连接
用我的方法   就是变相实现了socket的心跳机制   当网页非法关闭时你数据库中的有效时间就不会被更新了  从而你就知道网页被关闭了
当然如果你一定要用登录状态字段  就用你的PHP代码去不断查询数据库中的有效时间字段  判断是否过期  来修改登录状态吧(不过我觉得这步没必要,你完全可以用时间字段直接代替登录状态)

可以用window.setInterval();结合ajax来不断的向某个php文件发送数据,或者请求数据。

可以用递归函数实现你的这个功能

指定时间 去执行数据库操作 sleep() 需要一直停留在页面 怎样能实现在后台去等待 前台继续其他的操作呢

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template