note 125934 added to function.sleep

From: Date: Mon, 15 Mar 2021 20:55:40 +0000
Subject: note 125934 added to function.sleep
Groups: php.notes 
Request: Send a blank email to php-notes+get-219332@lists.php.net to get a copy of this message
An example of using sleep to run a set of functions at different intervals. This is not a replacement for multi-threading, but it could help someone that wants to do something cheap. You don't have to use eval(). It is just used as an example. This is different than running a standard 1 second sleep loop, due to sleeping longer does not consume as much CPU. <?php // current time echo date('h:i:s') . "\n"; // Some example functions function function_a() { echo 'function_a called @ ' . date('h:i:s') . PHP_EOL; } function function_b() { echo 'function_b called @ ' . date('h:i:s') . PHP_EOL; } function function_c() { echo 'function_c called @ ' . date('h:i:s') . PHP_EOL; } // Add some timers (in seconds) with function calls $sleeptimers = array(); $sleeptimers['5'][0]['func'] = 'function_a();'; $sleeptimers['10'][0]['func'] = 'function_b();'; $sleeptimers['15'][0]['func'] = 'function_c();'; // Process the timers while(true) { $currenttime = time(); reset($sleeptimers); $mintime = key($sleeptimers); foreach($sleeptimers as $SleepTime => $Jobs) { foreach($Jobs as $JobIndex => $JobDetail) { if(!isset($JobDetail['lastrun'])) { $sleeptimers[$SleepTime][$JobIndex]['lastrun'] = time(); if($SleepTime < $mintime) $mintime = $SleepTime; } elseif(($currenttime - $JobDetail['lastrun']) >= $SleepTime) { eval($JobDetail['func']); $lastrun = time(); $sleeptimers[$SleepTime][$JobIndex]['lastrun'] = $lastrun; $mysleeptime = $SleepTime - ($currenttime - $lastrun); if($mysleeptime < 0) $mysleeptime = 0; if(($currenttime - $JobDetail['lastrun']) < $mintime) $mintime = $mysleeptime; // account for length of time function runs echo 'Sleep time for function ' . $JobDetail['func'] . ' = ' . $mysleeptime . PHP_EOL; } } } echo 'Sleeping for ' . $mintime . ' seconds' . PHP_EOL; sleep($mintime); } ?> ---- Server IP: 45.112.84.4 Probable Submitter: 45.112.85.246 (proxied: 107.77.213.65) ---- Manual Page -- http://php.net/manual/en/function.sleep.php Edit -- https://master.php.net/note/edit/125934 Del: integrated -- https://master.php.net/note/delete/125934/integrated Del: useless -- https://master.php.net/note/delete/125934/useless Del: bad code -- https://master.php.net/note/delete/125934/bad+code Del: spam -- https://master.php.net/note/delete/125934/spam Del: non-english -- https://master.php.net/note/delete/125934/non-english Del: in docs -- https://master.php.net/note/delete/125934/in+docs Del: other reasons-- https://master.php.net/note/delete/125934 Reject -- https://master.php.net/note/reject/125934 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#219332) next »