The [PHP] command line performs a consolidated pathinfo simulation of timed tasks
Last Update:2016-08-12
Source: Internet
Author: User
<span id="Label3"></p><p><p>command-line mode, depending on the parameters, different controllers are Called. The controller performs the specified method according to the configuration timing</p></p><p><p>application.php</p></p><pre><?<span style="color: #000000;"><span style="color: #000000;">PHP</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span><span style="color: #000000;"><span style="color: #000000;">application{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">main () {</span></span><span style="color: #008080;"><span style="color: #008080;">Header</span></span>("content-type:text/html;charset=utf-8"<span style="color: #000000;"><span style="color: #000000;">); </span>self</span>::<span style="color: #000000;"><span style="color: #000000;">Register (); </span>self</span>::<span style="color: #000000;"><span style="color: #000000;">CommandLine (); </span>self</span>::<span style="color: #008080;"><span style="color: #008080;">PathInfo</span></span><span style="color: #000000;"><span style="color: #000000;">(); } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Auto Load</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span>LoadClass (<span style="color: #800080;"><span style="color: #800080;">$class</span></span><span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #800080;"><span style="color: #800080;">$class</span></span>=<span style="color: #008080;"><span style="color: #008080;">Str_replace</span></span>(‘\\‘, ‘/‘,<span style="color: #800080;"><span style="color: #800080;">$class</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #800080;"><span style="color: #800080;">$dir</span></span>=<span style="color: #008080;"><span style="color: #008080;">Str_replace</span></span>(‘\\‘, ‘/‘,<span style="color: #000000;"><span style="color: #000000;">__dir__); </span></span><span style="color: #800080;"><span style="color: #800080;">$class</span></span>=<span style="color: #800080;"><span style="color: #800080;">$dir</span></span>." /".<span style="color: #800080;"><span style="color: #800080;">$class</span></span>.". Php<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">require_once</span></span> <span style="color: #800080;"><span style="color: #800080;">$class</span></span><span style="color: #000000;"><span style="color: #000000;">; } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">under command line</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">commandLine () {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(<span style="color: #008080;"><span style="color: #008080;">Php_sapi_name</span></span>() = = "cli"<span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #800080;"><span style="color: #800080;">$_server</span></span>[' path_info ']= ' ""<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">foreach</span></span>(<span style="color: #800080;"><span style="color: #800080;">$_server</span></span>[' argv ']<span style="color: #0000ff;"><span style="color: #0000ff;"></span> as</span> <span style="color: #800080;"><span style="color: #800080;">$k</span></span>=<span style="color: #800080;"><span style="color: #800080;">$v</span></span><span style="color: #000000;"><span style="color: #000000;">) { </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(<span style="color: #800080;"><span style="color: #800080;">$k</span></span>==0)<span style="color: #0000ff;"><span style="color: #0000ff;">Continue</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #800080;"><span style="color: #800080;">$_server</span></span>[' path_info '].= '/'.<span style="color: #800080;"><span style="color: #800080;">$v</span></span><span style="color: #000000;"><span style="color: #000000;">; } } } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">pathinfo Processing</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span> <span style="color: #008080;"><span style="color: #008080;">PathInfo</span></span><span style="color: #000000;"><span style="color: #000000;">(){ </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(<span style="color: #0000ff;"><span style="color: #0000ff;">isset</span></span>(<span style="color: #800080;"><span style="color: #800080;">$_server</span></span>[' Path_info '<span style="color: #000000;"><span style="color: #000000;">])){ </span></span><span style="color: #800080;"><span style="color: #800080;">$pathinfo</span></span>=<span style="color: #008080;"><span style="color: #008080;">Array_filter</span></span>(<span style="color: #008080;"><span style="color: #008080;">Explode</span></span>("/",<span style="color: #800080;"><span style="color: #800080;">$_server</span></span>[' Path_info '<span style="color: #000000;"><span style="color: #000000;">])); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> for</span>(<span style="color: #800080;"><span style="color: #800080;">$i</span></span>= 1;<span style="color: #800080;"><span style="color: #800080;">$i</span></span><=<span style="color: #008080;"><span style="color: #008080;">Count</span></span>(<span style="color: #800080;"><span style="color: #800080;">$pathinfo</span></span>);<span style="color: #800080;"><span style="color: #800080;">$i</span></span>++<span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #800080;"><span style="color: #800080;">$key</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">isset</span></span>(<span style="color: #800080;"><span style="color: #800080;">$pathinfo</span></span>[<span style="color: #800080;"><span style="color: #800080;">$i</span></span>]) ?<span style="color: #800080;"><span style="color: #800080;">$pathinfo</span></span>[<span style="color: #800080;"><span style="color: #800080;">$i</span></span>] : ‘‘<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #800080;"><span style="color: #800080;">$value</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">isset</span></span>(<span style="color: #800080;"><span style="color: #800080;">$pathinfo</span></span>[<span style="color: #800080;"><span style="color: #800080;">$i</span></span>+1])?<span style="color: #800080;"><span style="color: #800080;">$pathinfo</span></span>[<span style="color: #800080;"><span style="color: #800080;">$i</span></span>+1]: ""<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Switch</span></span>(<span style="color: #800080;"><span style="color: #800080;">$i</span></span><span style="color: #000000;"><span style="color: #000000;">) { </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> case</span>1:<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' m ']=<span style="color: #008080;"><span style="color: #008080;">Ucfirst</span></span>(<span style="color: #800080;"><span style="color: #800080;">$key</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> break</span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> case</span>2:<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' C ']=<span style="color: #008080;"><span style="color: #008080;">Ucfirst</span></span>(<span style="color: #800080;"><span style="color: #800080;">$key</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> break</span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> case</span>3:<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' a ']=<span style="color: #800080;"><span style="color: #800080;">$key</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> break</span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">default</span></span>:<span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(<span style="color: #800080;"><span style="color: #800080;">$i</span></span>>3<span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(<span style="color: #800080;"><span style="color: #800080;">$i</span></span>%2==0<span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[<span style="color: #800080;"><span style="color: #800080;">$key</span></span>]=<span style="color: #800080;"><span style="color: #800080;">$value</span></span><span style="color: #000000;"><span style="color: #000000;">; } } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> break</span><span style="color: #000000;"><span style="color: #000000;">; } } } </span></span><span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' m ']=!<span style="color: #0000ff;"><span style="color: #0000ff;">Empty</span></span>(<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' m ']) ?<span style="color: #008080;"><span style="color: #008080;">Ucfirst</span></span>(<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' m ']) : ' Index '<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' C ']=!<span style="color: #0000ff;"><span style="color: #0000ff;">Empty</span></span>(<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' C ']) ?<span style="color: #008080;"><span style="color: #008080;">Ucfirst</span></span>(<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' C ']) : ' Index '<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' a ']=!<span style="color: #0000ff;"><span style="color: #0000ff;">Empty</span></span>(<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' a ']) ?<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' a ']: ' index '<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #800080;"><span style="color: #800080;">$class</span></span>= "\\controller\\{<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' m ']} \\{<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' C ']} "<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #800080;"><span style="color: #800080;">$controller</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">New</span></span> <span style="color: #800080;"><span style="color: #800080;">$class</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #800080;"><span style="color: #800080;">$controller</span></span>-<span style="color: #800080;"><span style="color: #800080;">$_get</span></span>[' a '<span style="color: #000000;"><span style="color: #000000;">](); } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Fatal Error Callback</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">shutdowncallback () {</span></span><span style="color: #800080;"><span style="color: #800080;">$e</span></span>=<span style="color: #000000;"><span style="color: #000000;">Error_get_last (); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(!<span style="color: #800080;"><span style="color: #800080;">$e</span></span>)<span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">; </span>self</span>:: ErrorHandler (<span style="color: #800080;"><span style="color: #800080;">$e</span></span>[' type '], ' <font color= ' red ' >fatal error</font> '.<span style="color: #800080;"><span style="color: #800080;">$e</span></span>[' message '],<span style="color: #800080;"><span style="color: #800080;">$e</span></span>[' file '],<span style="color: #800080;"><span style="color: #800080;">$e</span></span>[' Line '<span style="color: #000000;"><span style="color: #000000;">]); } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Error Handling</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">protected</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span>MyErrorHandler (<span style="color: #800080;"><span style="color: #800080;">$errno</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errstr</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errfile</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errline</span></span><span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">List</span></span>(<span style="color: #800080;"><span style="color: #800080;">$micseconds</span></span>,<span style="color: #800080;"><span style="color: #800080;">$seconds</span></span>)=<span style="color: #008080;"><span style="color: #008080;">Explode</span></span>(" ",<span style="color: #008080;"><span style="color: #008080;">Microtime</span></span><span style="color: #000000;"><span style="color: #000000;">()); </span></span><span style="color: #800080;"><span style="color: #800080;">$micseconds</span></span>=<span style="color: #008080;"><span style="color: #008080;">round</span></span>(<span style="color: #800080;"><span style="color: #800080;">$micseconds</span></span>*1000<span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #800080;"><span style="color: #800080;">$micseconds</span></span>=<span style="color: #008080;"><span style="color: #008080;">strlen</span></span>(<span style="color: #800080;"><span style="color: #800080;">$micseconds</span></span>) ==1? ' 0 '.<span style="color: #800080;"><span style="color: #800080;">$micseconds</span></span>:<span style="color: #800080;"><span style="color: #800080;">$micseconds</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(<span style="color: #008080;"><span style="color: #008080;">Php_sapi_name</span></span>() = = "cli"<span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #800080;"><span style="color: #800080;">$break</span></span>= "\ r \ n"<span style="color: #000000;"><span style="color: #000000;">; }</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span><span style="color: #000000;"><span style="color: #000000;">{ </span></span><span style="color: #800080;"><span style="color: #800080;">$break</span></span>= "<br/>"<span style="color: #000000;"><span style="color: #000000;">; } </span></span><span style="color: #800080;"><span style="color: #800080;">$mes</span></span>="[".<span style="color: #008080;"><span style="color: #008080;">Date</span></span>("y-m-d h:i:s",<span style="color: #800080;"><span style="color: #800080;">$seconds</span></span>).":{<span style="color: #800080;"><span style="color: #800080;">$micseconds</span></span>}] ".<span style="color: #800080;"><span style="color: #800080;">$errfile</span></span>." ".<span style="color: #800080;"><span style="color: #800080;">$errline</span></span>. "line".<span style="color: #800080;"><span style="color: #800080;">$errstr</span></span>.<span style="color: #800080;"><span style="color: #800080;">$break</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Echo</span></span> <span style="color: #800080;"><span style="color: #800080;">$mes</span></span><span style="color: #000000;"><span style="color: #000000;">; } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Register</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">Register () {</span></span><span style="color: #008080;"><span style="color: #008080;">error_reporting</span></span>(0<span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #008080;"><span style="color: #008080;">Set_error_handler</span></span>(<span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span>(<span style="color: #800080;"><span style="color: #800080;">$errno</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errstr</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errfile</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errline</span></span><span style="color: #000000;"><span style="color: #000000;">) {</span> self</span>:: MyErrorHandler (<span style="color: #800080;"><span style="color: #800080;">$errno</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errstr</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errfile</span></span>,<span style="color: #800080;"><span style="color: #800080;">$errline</span></span><span style="color: #000000;"><span style="color: #000000;">); }); </span></span><span style="color: #008080;"><span style="color: #008080;">register_shutdown_function</span></span>(<span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">() {</span> self</span>::<span style="color: #000000;"><span style="color: #000000;">Shutdowncallback (); }); Spl_autoload_register (</span></span>"self::loadclass"<span style="color: #000000;"><span style="color: #000000;">); }}application</span></span>:: Main ();</pre><p><p>\controller\client\cron.php</p></p><pre><?<span style="color: #000000;"><span style="color: #000000;">phpnamespace controller\client;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span><span style="color: #000000;"><span style="color: #000000;">cron{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Private</span></span> <span style="color: #800080;"><span style="color: #800080;">$second</span></span>=0<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Private</span></span> <span style="color: #800080;"><span style="color: #800080;">$tasks</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">Array</span></span><span style="color: #000000;"><span style="color: #000000;">( </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Array</span></span>("duration" =>5, "method" = "dosomething"),<span style="color: #0000ff;"><span style="color: #0000ff;">Array</span></span>("duration" =>2, "method" = "doSomething2"),<span style="color: #000000;"><span style="color: #000000;"> ); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">index () {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> while</span>(<span style="color: #0000ff;"><span style="color: #0000ff;">true</span></span><span style="color: #000000;"><span style="color: #000000;">) { </span></span><span style="color: #008080;"><span style="color: #008080;">Sleep</span></span>(1<span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #800080;"><span style="color: #800080;">$this</span></span>->second++<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">foreach</span></span>(<span style="color: #800080;"><span style="color: #800080;">$this</span></span>->tasks<span style="color: #0000ff;"><span style="color: #0000ff;"></span> as</span> <span style="color: #800080;"><span style="color: #800080;">$task</span></span><span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(<span style="color: #800080;"><span style="color: #800080;">$this</span></span>->second%<span style="color: #800080;"><span style="color: #800080;">$task</span></span>[' Duration ']==0<span style="color: #000000;"><span style="color: #000000;">){ </span></span><span style="color: #800080;"><span style="color: #800080;">$this</span></span>-<span style="color: #800080;"><span style="color: #800080;">$task</span></span>[' method '<span style="color: #000000;"><span style="color: #000000;">](); } } } } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">dosomething () {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Echo</span></span>"[".<span style="color: #008080;"><span style="color: #008080;">Date</span></span>("y-m-d h:i:s",<span style="color: #008080;"><span style="color: #008080;"></span> time</span>())."] DoSomething1 ok!\r\n "<span style="color: #000000;"><span style="color: #000000;">; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">doSomething2 () {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Echo</span></span>"[".<span style="color: #008080;"><span style="color: #008080;">Date</span></span>("y-m-d h:i:s",<span style="color: #008080;"><span style="color: #008080;"></span> time</span>())."] DoSomething2 ok!\r\n "<span style="color: #000000;"><span style="color: #000000;">; }}</span></span></pre><p><p>Effect:</p></p><p><p>Method DoSomething is performed every 2 seconds</p></p><p><p>Method DoSomething2 is performed every 5 seconds</p></p><p><p>Now the other methods are synchronous and can be optimized to open new threads to execute these methods without blocking the timing of the main thread</p></p><p><p></p></p><p><p>The [PHP] command line performs a consolidated pathinfo simulation of timed tasks</p></p></span>