服务器每天定时循环执行检测网站是否打得开脚本PHP任务代码
发布时间:2017-08-18, 09:26:42 分类:Linux | 编辑 off 网址 | 辅助
图集1/7
正文 2902字数 992,293阅读
PHP定时执行任务PHP简单检测网址是否能够正常打开的方法
这是一个检测网址是否能正常打开的PHP代码,通过下面的代码检测一个网址是否能正常访问,如果正常则会返回http状态码200的值,如果为其它则不正常;这个代码我们可以用到很多地方,例如缓存友情链接的ICO图标时就可以用到,缓存时先检测网站是否正常,如果正常就缓存ICO图标,否则调用一个默认的图标文件。
<?php
/*
* Created on 2016-9-4
*
*/
function httpcode($url){
$ch = curl_init();
$timeout = 3;
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch,CURLOPT_URL,$url);
curl_exec($ch);
return $httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
}
echo "判断链接:".httpcode('https://lizhenqiu.com/'); //如果显示为200则正常,如果显示其它值表示不正常;$timeout后面的3是设置超时秒数。
?>
Run code
Cut to clipboard
windows批处理文件
"E:\PHP\wamp\bin\php\php5.5.12\php.exe" -f "E:\PHP\wamp\www\write.php"
Run code
Cut to clipboard
创建任务计划
开始–》附件–》系统工具–》任务计划程序
双击创建任务
创建名称和设置执行权限
设置好开始时间和重复任务间隔时间
选择写好的脚本路径
这里的php.exe是php安装目录下三个和php相关的exe文件中的一个,php-cgi.exe、php-win.exe
php-cgi.exe提供来作为CGI使用的,通常用来在windows环境下通过cgi方式解析php脚本,常用于在iis下运行php网站,区别是在文件输出所有内容之前,会自动输出一个下面的HTTP头
X-Powered-By: PHP/5.2.5
Content-type: text/html
Run code
Cut to clipboard
php-win.exe也可以执行PHP文件,区别是打开控制台,不显示输出内容。可以用来编写无需显示界面的文件处理、网路服务等程序。
PHP执行代码
<?php
$fp = @fopen("E:/PHP/wamp/www/test.txt", "a+");
fwrite($fp, "自动播报时间:\n" . date("Y-m-d H:i:s"));
fclose($fp);
Run code
Cut to clipboard
这里的文件路径一定要是绝对路径,因为没有经过apache或iis这种服务器,除了一些基于服务器的变量不能使用的,如$_SERVER等,还有很有可能发生各种无法预计的错误。
在windows环境下面用命令行去执行php文件
(1)配置系统变量path的值。将你的php程序的执行程序php.exe文件所在的路径加入到系统变量的path中去(注意不要把path中已存在的字符串给改了,各个值之间的分隔符号用分号,如下图所示)
(2)按以上配置完毕就可以了,以后就可以直接在dos窗口界面按如下命令直接运行php脚本文件了:
php D:\PHPnow-1.5.6\htdocs\test.php
Run code
Cut to clipboard
添加修改PHP环境变量系统变量可能导致nginx No input file specified.问题
解决方法
发送短信返回结果代码回调码
数组字符串json
访问回去json值
js
$.parseJSON(data)
Run code
Cut to clipboard
php
echo $ss=json_encode($arr);
Run code
Cut to clipboard
1、使用 json_decode($d, true)。就是使json_decode 的第二个变量设置为 true。
2、json_decode($res) 返回的是一个对象, 不可以使用 $res['key'] 进行访问, 换成 $res->key 就可以了。
$res->key
Run code
Cut to clipboard
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
Run code
Cut to clipboard
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
Run code
Cut to clipboard
参考资料
Windows任务计划定时执行PHP代码及扩展
php.exe和php-win.exe和php-cgi.exe的区别
windows下的Nginx和php搭配 php-cgi.exe自动关闭退出的完美解决方法
php定时计划任务介绍
如何用php.exe运行php文件
PHP运行模式
php中json_decode()和json_encode()的使用方法
(支付宝)给作者钱财以资鼓励 (微信)→
有过 6 条评论 »
<?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=5;// 每隔5s运行 //方法1--死循环 do{ echo '测试'.time().'<br/>'; sleep($interval);// 等待5s }while(true); //方法2---sleep 定时执行 require_once './curlClass.php';//引入文件 $curl = new httpCurl();//实例化 $stime = $curl->getmicrotime(); for($i=0;$i<=10;$i++){ echo '测试'.time().'<br/>'; sleep($interval);// 等待5s } ob_flush(); flush(); $etime = $curl->getmicrotime(); echo '<hr>'; echo round(($etime-stime),4);//程序执行时间
测试的时候发现这个效率并不是很高。
@2楼#re#2031
<?php $fp = @fopen("E:/PHP/wamp/www/test.txt", "a+");
curl_setopt($ch, CURLOPT_HEADER, false);//关闭头部输出
谁早把 BTC 花掉,谁就死亏。
更何况 BTC 并不是总量固定,而是总量永远在减少,因为钱币一旦遗失就再也找不回来了。
┏━┯━┯━┯━┯━┯━┯━┯━┯━┯━┓
┃ │ │ │ │ │ │?│你│配│因┃
┃ │ │ │ │ │ │ │也│姓│为┃
┃ │ │ │ │ │ │ │敢│赵│ ┃
┃ │ │ │ │ │ │ │姓│?│你┃
┃ │ │ │ │ │ │ │赵│ │也┃
┗━┷━┷━┷━┷━┷━┷━┷━┷━┷━┛
BAT 批处理 这项任务的一个实例已在运行0x8004031F.
任务设置:
请选择 “请勿启动新实例” 在选项“如果此任务已经运行,以下规则适用:”下, 然后再运行此命令观察是否有错误。
关于任务设置的具体选项, 请参考文章