如何让函数(php)每天第一次打开时执行一次?

如题所述

可以通过一个txt文件来存储最后操作这个函数的时间yyyy-mm-dd这样的形式,写一个函数,获取当前时间,也转化为yyyy-mm-dd这样的形式,对比,如果不同则执行你要的操作,如果相同就不执行,执行之后将当前时间再以yyyy-mm-dd这样的形式写入到txt文件中。这样让登陆系统的用户每次登陆都先执行这个方法。不过,这里考虑到这样的执行可能数据量很大,我们可以这样来做,将这个方法的最大执行时间设置为无限长,并设置为可以在后台执行。前台用户登陆的首页加载完自己的页面后通过ajax来访问这个页面,这样不就解决效率的问题了吗。
下面看一下我的这样一个代码,后台也可以写个配置文件,是否开启自动执行这个程序的功能。
//自动数据转移
function turnMessage(){
set_time_limit(0);
ignore_user_abort(true);
global $gzhuan,$guser,$hfdate1;
if('1'==$gzhuan){
$now = time();
$time = date('Y-m-d',$now);
$file = 'include/time.txt';
$f = fopen($file,'r+');
$t = fread($f,filesize($file));
fclose($f);
if($t!=$time){
$timeok = date('Y-m-d',$now-$hfdate1*86400);
$user = $this->tmp_mod->getOneUser($guser);
if($user){
$list = $this->tmp_mod->getGuoqi($timeok);
if($list[0]){
$ymd = date('Y-m-d H:i:s',$now);
$d['Adminid'] = $guser;
$d['Admin'] = $user['adminRealName'];
$d['hfzt'] = 1;
$d['YyTime'] = $time;
$d['zhuanru'] = 1;
foreach($list as $key=>$val){
$data['pro_id'] = $val['ID'];
$data['admin_id'] = 0;
$data['adminname'] = '系统';
$data['content'] = '系统自动转入本数据,原预约时间为:'.$val['YyTime'];
$data['dates'] = $ymd;
$data['type'] = 0;
$rs = $this->tmp_mod->addProBz($data);
$rs2 = $this->tmp_mod->editProducts($val['ID'],$d);
}
if($rs&&$rs2){
parent::innerLog('自动转移数据','1');
$f = fopen($file,'w+');
fwrite($f,$time);
fclose($f);
}else{
parent::innerLog('自动转移数据','0');
}
}
}
}
}
unset($gzhuan,$guser,$hfdate1);
exit;
}
上面的$this->tmp_mod->等方法都是我用的框架中一下操作数据库的方法,不用深究。我觉得这样写,再用ajax来调取,就会不影响用户的效率,又能达到目的,也是很不错的选择。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-29
其实这个问题还真 点难度:
我只能提供一下思路:
1.建立一个日期表,字段有ID(记录编号,可不需要,最好加上),IP(第一次执行来自哪里),DATE(日期);
2.在你的系统中包含这样一个程序,
3。执行时读取表,看看是否表中有当前天的记录,
4.如果有则不执行你需要的函数,若表中没有当天的记录则要执行你所需的函数,
5.在此之前先把当前执行的IP记录到数据表中;
第2个回答  推荐于2016-03-19
其实这个问题还真 点难度:
我只能提供一下思路:
1.建立一个日期表,字段有ID(记录编号,可不需要,最好加上),IP(第一次执行来自哪里),DATE(日期);
2.在你的系统中包含这样一个程序,
3。执行时读取表,看看是否表中有当前天的记录,
4.如果有则不执行你需要的函数,若表中没有当天的记录则要执行你所需的函数,
5.在此之前先把当前执行的IP记录到数据表中;本回答被提问者和网友采纳
第3个回答  2013-02-26
你问的问题不是很清晰:
一、如果你学PHP,那么在网上下载相应的开发环境并安装成功,那么,每次开机都会直接运行PHP.exe的。
二、如果你是要PHP函数,在每次打开网页时运行一次,用include_once或require_once来引用编写函数的php文件。格式如下:
include_once("function.php");
或者
require_once("function.php");//function.php是你编写的含有php函数的文件。

三、如果你是想在Windows环境下,让一个包涵PHP函数的网页,每次开机时运行,那么需要在我的电脑里,计划任务中设置。
四、如果你使用linux系统,对不起,这超出我的知识范围。
第4个回答  2013-02-26
linux cron job

php 每隔指定时间就执行一段代码
<?phpignore_user_abort();\/\/关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);\/\/ 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;\/\/ 每隔半小时运行 do{ \/\/这里是你要执行的代码 sleep($interval);\/\/ 等待5分钟 }while(true); ?> ...

怎么实现页面一按钮点击后执行一个后台的php函数
当你能用鼠标点击div的时候, php已经不存在那个函数了, php是运行于服务器端(Apache、iis、Nginx等), 你所谓的div是运行在客户端(浏览器等), 两种语言,两种运行机制, 不可直接混为一谈、相互调用!当然, 可以间接调用, 就是ajax再次后台请求php文件, 服务器处理请求 ...

如何让服务器每隔几分钟自动运行php文件 win7
1、计算机(右键)->管理 ,然后就可以打开 “计算机管理”界面。2、在界面的左侧有一个 系统工具->任务计划程序 ,在此用户可以创建定时执行的计划任务,并且可以为每个任务添加触发器和具体的操作。3、选择“创建基本任务”,将时间设置为每天。4、在启动程序中设置打开php文件的程序,php文件是网页文件...

如何利用PHP在指定日期执行其中的某个函数
第一种,由 crontab 定时任务指定,定时在每个月 7 号执行一个脚本或访问一个连接,然后在这个脚本中执行逻辑处理;(crontab 用法可以网上搜一下,有许多 blog 博客讲得挺详细的,在这里就不赘述了)第二种,crontab 可以定时不停地执行,但是要在脚本中加入条件做判断;例如:if ( date( 'd', ...

php控制每小时内的执行次数
= date('H');if (! isset($_SESSION['count']))$_SESSION['count'] = 0;if (! isset($_SESSION['h']))$_SESSION['h'] = $h;if ($_SESSION['h'] !==$h){\/\/每一小时重置一次 $_SESSION['count'] = 0; $_SESSION['h'] = $h;}\/\/小于20次就执行if (...

PHP 怎么实现模拟点击,就是定时执行在鼠标在固定位置点击一次的效果
JS使用定时器是用:setInteval(function(){}, time)或者setTimeout(function(){}, time)函数实现的,具体效果得看你想做成什么样的,定时调用一下就行了!

php如何仅在一打开网页时产生一个随机数
PHP 的随机数函数是 rand() 至于用法你可以去看手册说的肯定比我详细.第2个问题: 数组中是随机取得一个元素的函数 是array_rand()楼主 要多去看手册 要不然 你连PHP有什么函数都不知道,难道每次都要来百度问吗...建议先去看 字符串函数 跟 数组函数 还有SQL函数 ...

qutarz如何设置一小时内每一分钟执行一次
2。需要注意的一点是 ABORTED 和 TIMEOUT 状态可以同时有效。这在告诉 PHP 忽略用户的退出操作时是可能的。PHP 将仍然注意用户已经中断了连接但脚本仍然在运行的情况。如果到了运行的时间限制,脚本将被退出,设置过的关闭触发函数也将被执行。在这时会发现函数 connection_status() 返回 3。

如何在php类中执行某方法的时候自动执行另一个方法?比如我执行数据插入...
如果before_insert是一个过滤函数,如果验证失败就会返回false,insert插入就不会进行了。如果不明白可以阅读PHP手册中介绍魔术方法的部分。<?phpclass MyClass{ \/\/ 如果使用类的实例调用$method,但$method方法不是公有的,就会触发此函数。 public function __call($method, $args) { \/\/ 检...

php中为什么函数在未被定义前调用也能成功执行?
首先PHP不是单纯的按照行来边解释边执行的,而是先由Zend引擎翻译PHP代码到Zend二进制操作码,然后再去执行操作码。对于function的位置,因为函数的作用域是全局的,所以只要定义了,那么就可以在任意位置去调用它。但是除了两种情况,函数必须在其调用之前定义,一是在条件语句中定义的函数,二是在函数中...

相似回答