ShivaGupta Posted September 3, 2013 Share Posted September 3, 2013 (edited) i found this script to run many php as same time. <?php /** * @author Multi-threaded script by Nicolas Iglesias * @copyright 2008 */ require_once ("thread_class.php"); $pathToPhp = "/usr/bin/php"; $A = new Threader("$pathToPhp -f test.php",null, "a"); /** * First argument: external script or command (required). * Second argument: arguments that your external script or command will receive (optional). * Third argument: name of thread (optional). */ $B = new Threader("$pathToPhp -f test.php",null, "b"); $C = new Threader("$pathToPhp -f test.php",null, "c"); $D = new Threader("$pathToPhp -f test.php",null, "d"); $E = new Threader("$pathToPhp -f test.php",null, "e"); $F = new Threader("$pathToPhp -f test.php",null, "f"); /** * We check if any of the 'active' states of our threads are true; * then we display its output using 'listen'. */ while ($A->active || $B->active || $C->active || $D->active || $E->active || $F-> active) { echo "[Thread ".$A->threadName."] => " . $A->listen(); echo "[Thread ".$B->threadName."] => " . $B->listen(); echo "[Thread ".$C->threadName."] => " . $C->listen(); echo "[Thread ".$D->threadName."] => " . $D->listen(); echo "[Thread ".$E->threadName."] => " . $E->listen(); echo "[Thread ".$F->threadName."] => " . $F->listen(); } ?> <?php /** * Threader * * @package Threader Class * @author Nicolas Iglesias - nfiglesias@gmail.com - cleversight.com * @copyright 2008 * @version 1.0 * @access public */ class Threader { var $threadName = null; var $rid = null; var $error = null; var $pipes = array(); var $active = false; /** * Threader::Threader() * * The constructor which opens the process. * * @param mixed $cmd - Execute a shell command * @param mixed $vars - Pass arguments to shell command * @param string $name - Identifies your thread (useful for debug) * @return void */ function Threader($cmd = null, $vars = null, $name = null) { $descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w")); $pipes = array(); if (!empty($cmd)): $this->threadName = $name; try { $this->rid = proc_open("$cmd $vars", $descriptorspec, $this-> pipes, null, $_ENV); $this->active = true; } catch (exception $e) { $this->active = false; $this->error = $e->getMessage(); } endif; } /** * Threader::listen() * * While $this->active == true, you can monitor a thread by calling this method. * * @return string - Will return the output of the running process */ public function listen() { if (is_resource($this->rid) && !empty($this->pipes)) { $stdout = (isset($this->pipes['1'])) ? $this->pipes['1'] : null; return fgets($stdout); } else { return null; } } function __destruct() { $this->active = false; if (is_resource($this->rid)) proc_close($this->rid); if (!empty($this->error)) echo $this->error; } } ?> but i dont understand this line in this script $pathToPhp = "/usr/bin/php"; $A = new Threader("$pathToPhp -f test.php",null, "a"); can any one explain about $pathToPhp . because script not working for me n i think something wrong with path.i am testing with linux web hosting.. so plz help me to shortout this . Edited September 3, 2013 by ShivaGupta Quote Link to comment https://forums.phpfreaks.com/topic/281803-need-help-with-multi-threaded-script/ Share on other sites More sharing options...
ShivaGupta Posted September 3, 2013 Author Share Posted September 3, 2013 anybody plz explain this code can run minium 5 php prosses in background ? also plz tell me is this path ($pathToPhp) releted to php files or php installtion diarectory? Quote Link to comment https://forums.phpfreaks.com/topic/281803-need-help-with-multi-threaded-script/#findComment-1447972 Share on other sites More sharing options...
AbraCadaver Posted September 3, 2013 Share Posted September 3, 2013 //path to php executable $pathToPhp = "/usr/bin/php"; //$pathToPhp means run PHP //-f test.php means run that file //null means options you send to your script, in this case none //a is any name you give to this thread so you can reference it later $A = new Threader("$pathToPhp -f test.php", null, "a"); Quote Link to comment https://forums.phpfreaks.com/topic/281803-need-help-with-multi-threaded-script/#findComment-1447978 Share on other sites More sharing options...
ShivaGupta Posted September 7, 2013 Author Share Posted September 7, 2013 //path to php executable $pathToPhp = "/usr/bin/php"; //$pathToPhp means run PHP //-f test.php means run that file //null means options you send to your script, in this case none //a is any name you give to this thread so you can reference it later $A = new Threader("$pathToPhp -f test.php", null, "a"); ok thank you sir i understand that but here i have another quection n need help again.............. 1.How to get correct "$pathToPhp of my linux hosting ? 2. and for file this code can work with only test.php or need full path of file ? Quote Link to comment https://forums.phpfreaks.com/topic/281803-need-help-with-multi-threaded-script/#findComment-1448565 Share on other sites More sharing options...
jazzman1 Posted September 7, 2013 Share Posted September 7, 2013 1.How to get correct "$pathToPhp of my linux hosting ? which php or whereis php 2. and for file this code can work with only test.php or need full path of file ? Yes, the script is written to run some other commands from test.php file. Make sure they are on the same directory. Quote Link to comment https://forums.phpfreaks.com/topic/281803-need-help-with-multi-threaded-script/#findComment-1448587 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.