前提・実現したいこと
現在PHPの勉強中です。
PHPで一定時間ごとに実行するような処理を書いています。
現在の自分で書いたコードでもやりたいことはできているのですが、
とても無駄のある書き方だなと思っており、
もう少し簡素化できないかと思い質問させていただきました。
こんな風に書けばよいとか、このサイトを見ればよいとかでもよいので、
アドバイスをいただけたらありがたいです。
処理の内容によって一定時間ごとに実行できないかもしれないというのは、
ひとまず無視してください。
もしこのような内容が不適切であればコメントいただければ取り下げさせていただきます。
よろしくお願いいたします。
該当のソースコード
PHP
1<?php 2$debug = 1; 3$counter = 0; 4 5while(true){ 6 //echo "カウンター:".$counter.PHP_EOL; 7 $startTime = str_replace(".","",microtime(true)); 8 9 //=============== 10 //1秒ごとに実行する内容 11 if(isset($end_exeTime_1) == false ){ 12 $end_exeTime_1 = 0; 13 } 14 $exe_MinTime_1 = $startTime - $end_exeTime_1; 15 $set_exeMinTime = 10000; //1sec=10000 16 if($exe_MinTime_1 >= $set_exeMinTime){ 17 //ここに実行したい処理 18 echo outputTime().PHP_EOL; 19 echo "1秒ごとに実行".PHP_EOL; 20 $end_exeTime_1 = str_replace(".","",microtime(true)); 21 } 22 //=============== 23 24 //=============== 25 //10秒ごとに実行する内容 26 if(isset($end_exeTime_2) == false ){ 27 $end_exeTime_2 = 0; 28 } 29 $exe_MinTime_2 = $startTime - $end_exeTime_2; 30 $set_exeMinTime = 100000; //1sec=10000 31 if($exe_MinTime_2 >= $set_exeMinTime){ 32 //ここに実行したい処理 33 echo outputTime().PHP_EOL; 34 echo "10秒ごとに実行".PHP_EOL; 35 $end_exeTime_2 = str_replace(".","",microtime(true)); 36 } 37 //=============== 38 39 40 $counter++; 41 if(debug == 1){ 42 if($counter >= 100){ 43 break; 44 } 45 } 46 //カウンターリセット 47 if($counter == hexdec("FFFF")){ 48 $counter = 0; 49 } 50 51}//----------while 52 53 54//+++++++++++++++++++++++++++++++++++++++++++ 55function outputTime(){ 56 $unixTime = explode( '.', microtime(true) ); 57 $dispTime = date( 'Y/m/d H:i:s', $unixTime[0] ) . "." . substr( $unixTime[1].'0000', 0 , 3 ); 58 return $dispTime; 59} 60?>
補足情報(FW/ツールのバージョンなど)
MacOS 10.13.6
PHP 7.1.16(cli)
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/24 02:25
2018/10/25 00:49
2018/10/25 02:27
2018/10/25 05:08