Jump to content
php.lv forumi

Fona procesi


v3rb0

Recommended Posts

Kādi ir varianti, lai no php scripta palaistu fona procesu, kas kaut ko darītu atkabinājies no tā scripta kuru useris izsauc (pieņemism, šamais varētu salasīt un updeitot datus smaga reporta `starptabulām`). Prātā nāk spēlēšanās ar exec() un ar `&` meģināt atkabināt kā jebkuru parastu procesu. cron`a izmantošana ar īsti neder, jo gribas, atkabinātos scriptus pielaist tad kad formā tiek kaut kas nospiests un tajā dabūt iekšā kaut ko no sessijā esošajiem datiem. Varbūt ir kaut kādi gatavi scripti šādām vajadzībām vai labāki varianti. Labi būtu ja atkabinātie skripti izpildītos ar zemāku prioritāti, bet pavisam ideāli, ja viņus varētu salikt rindā vienu aiz otra un izpildītu pa vienam no rindas.

 

thnx jau avansā!

Link to comment
Share on other sites

nu ar to exec var palaist php skriptu.

 

exec('/usr/bin/php4 skripts.php &');

 

veel jau vari arii laist no web interfeisa, tikai tad taimauts jaauzliek ilgaaks un jaaskataas,lai nebuutu probleemas ar refresh.

Link to comment
Share on other sites

Kādi ir varianti, lai no php scripta palaistu fona procesu, kas kaut ko darītu atkabinājies no tā scripta kuru useris izsauc (pieņemism, šamais varētu salasīt un updeitot datus smaga reporta `starptabulām`). Prātā nāk spēlēšanās ar exec() un ar `&` meģināt atkabināt kā jebkuru parastu procesu. cron`a izmantošana ar īsti neder, jo gribas, atkabinātos scriptus pielaist tad kad formā tiek kaut kas nospiests un tajā dabūt iekšā kaut ko no sessijā esošajiem datiem. Varbūt ir kaut kādi gatavi scripti šādām vajadzībām vai labāki varianti. Labi būtu ja atkabinātie skripti izpildītos ar zemāku prioritāti, bet pavisam ideāli, ja viņus varētu salikt rindā vienu aiz otra un izpildītu pa vienam no rindas.

 

thnx jau avansā!

15887[/snapback]

 

Mh... var jau ari savu sheduleri taisīt. teksim JOB-us ielikt kā parastus failus iekš foldera, kur iekšā būtu ierakstīta komanda... un tad ar sheduler.php laist jobus.

 

sheduler.php

$pidFile = 'sheduler.php.pid';
$jobDir = '/path/to/jobs';

if ( file_exists($pidFile) ) {
   die( 'already running' );
}

fwrite( fopen($pidFile,'w'), '1' );

$dh = opendir($jobDir);
while ( ($file=readdir($dh)) !== false ) {
  // .. check files
  $files[] = $file;
}

$files = sort( $files );

foreach ( $files AS $file ) {
   exec( $file );
   // Vai
   exec( file_get_contents($jobDir.'/'.$file ) );
}

unlink( $pidFile );

 

sheduler.php palaižam tā kā teica `pnp`... bet pirms tam uztaisam job failu

 

$jobCmd = '/usr/local/php/bin/php /path/to/any/file.php and any arguments';
$priority = 100;
$jobFile = $priority.'_php.job';
fwrite( fopen($jobDir.$jobFile,'w'), $jobCmd );

 

iisumaa viss... rakstīju bez jebkādām datu pārbaudēm

Link to comment
Share on other sites

×
×
  • Create New...