图集1/7

正文 2902字数 992,312阅读

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.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

        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()的使用方法