服务器每天定时循环执行检测网站是否打得开脚本PHP任务代码

682 阅读2分钟

图集1/7

正文 3532字数 510阅读

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://blog.iswtf.com/'); //如果显示为200则正常,如果显示其它值表示不正常;$timeout后面的3是设置超时秒数。
?>
Run code Cut to clipboard
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

windows批处理文件
"E:\PHP\wamp\bin\php\php5.5.12\php.exe" -f "E:\PHP\wamp\www\write.php" Run code Cut to clipboard
  • 1

创建任务计划
开始–》附件–》系统工具–》任务计划程序 
双击创建任务 

创建名称和设置执行权限 

设置好开始时间和重复任务间隔时间 

选择写好的脚本路径 

这里的php.exe是php安装目录下三个和php相关的exe文件中的一个,php-cgi.exephp-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
  • 1
  • 2

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
  • 1
  • 2
  • 3
  • 4

这里的文件路径一定要是绝对路径,因为没有经过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
  • 1

添加修改PHP环境变量系统变量可能导致nginx No input file specified.问题
解决方法

发送短信返回结果代码回调码
数组字符串json
访问回去json值
js
$.parseJSON(data) Run code Cut to clipboard
  • 1

php
echo $ss=json_encode($arr); Run code Cut to clipboard
  • 1

1、使用 json_decode($d, true)。就是使json_decode 的第二个变量设置为 true。
2、json_decode($res) 返回的是一个对象, 不可以使用 $res['key'] 进行访问, 换成 $res->key 就可以了。
$res->key Run code Cut to clipboard
  • 1

<?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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15


参考资料
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()的使用方法