load->library( 'services/ConvertToPdf' ); } public function testConversion() { $dossierID = $this->uri->segment( 4 ); $this->convertDocument( $dossierID ); } public function queueConversion() { $dossierID = $this->uri->segment(4); $pheanstalk = new Pheanstalk( '127.0.0.1' ); $job = new stdClass(); $this->db->limit(1000); $this->files = $this->Files_model->get(['conversion_status'=> 'TRY-CONVERSION']); foreach($this->files ? $this->files : [] as $file) { $job->function = 'convertDocument'; $job->user_data = $file->id; $job_data = json_encode( $job ); $pheanstalk ->useTube( $this->beanstalkPipe ) ->put( $job_data ); } } public function queueListen() { while ( TRUE ) { $pheanstalk = new Pheanstalk( '127.0.0.1' ); $job = $pheanstalk ->watch( $this->beanstalkPipe ) ->ignore( 'default' ) ->reserve(); $job_data = json_decode( $job->getData() ); $function = $job_data->function; $user_data = $job_data->user_data; $conversionstatus = $this->$function( $user_data ); $message = ''; $pheanstalk->delete( $job ); $message = 'JOB : ' . $function . ' COMPLETED WITH DATA : ' . $user_data . ' -RESULT :' . $conversionstatus . "\n"; $message .="--------------------------------------------------------------------------------------------------\n\n"; $this->writeToQueueLog( $message); } } public function convertDocument( $fileID ) { $message = 'CONVERSION STARTED @:' . date( 'd-m-Y | H:i:s' ); $file= $this->Files_model->get( $fileID ); $this->converttopdf->handle( $file ); $conversionstatus = $this->converttopdf->getConversionStatus(); $this->Files_model->update_record( [ 'conversion_status' => $conversionstatus], $fileID ); $message .= '| - | CONVERSION ENDED @:' . date( 'd-m-Y | H:i:s' ) . "\n"; $message .= 'CONVERSIONSTATUS: '.$conversionstatus.' FOR DOSSIER ID :'.$fileID . "\n" ; $this->writeToQueueLog( $message); return $conversionstatus; } private function writeToQueueLog($message) { $this->load->helper( 'file' ); $logFile = APPPATH.'logs/queue.log'; if( ! write_file($logFile, $message, 'a+')) { log_message('debug', 'Unable to write message to queue log file'); } } }