115 lines
2.9 KiB
PHP
115 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* Created by Pensare Software.
|
|
* User: Theo Weijmer
|
|
* Date: 09/09/2017
|
|
* Time: 10:18
|
|
*/
|
|
|
|
use Pheanstalk\Pheanstalk;
|
|
|
|
|
|
class documentconversion extends MY_Controller {
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
$this->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');
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|