> /var/log/httpd/thumbnail_log
*
* @version $Header$
* @package fisheye
* @subpackage functions
*/
namespace Bitweaver\Fisheye;
use Bitweaver\KernelTools;
global $gBitSystem, $gBitDb, $_SERVER;
$_SERVER['SCRIPT_URL'] = '';
$_SERVER['HTTP_HOST'] = '';
$_SERVER['HTTP_HOST'] = '';
$_SERVER['HTTP_HOST'] = '';
$_SERVER['SERVER_NAME'] = '';
/**
* required setup
*/
if( !empty( $argc ) ) {
// reduce feedback for command line to keep log noise way down
define( 'BIT_PHP_ERROR_REPORTING', E_ERROR | E_PARSE );
}
// running from cron can cause us not to be in the right dir.
chdir( dirname( __FILE__ ) );
require_once '../kernel/includes/setup_inc.php';
// add some protection for arbitrary thumbail execution.
// if argc is present, we will trust it was exec'ed command line.
if( empty( $argc ) && !$gBitUser->isAdmin() ) {
$gBitSystem->fatalError( KernelTools::tra( 'You cannot run the thumbnailer' ));
}
$thumbCount = ( !empty( $argv[1] ) ) ? $argv[1] : ( !empty( $_REQUEST['thumbnails'] ) ? $_REQUEST['thumbnails'] : 10);
$gBitDb->StartTrans();
$sql = "SELECT pq.content_id AS hash_key, pq.*
FROM `".BIT_DB_PREFIX."liberty_process_queue` pq
WHERE pq.begin_date IS null
ORDER BY pq.queue_date";
$rows = $gBitSystem->mDb->getAssoc( $sql, false, $thumbCount );
$processContent = [];
foreach( $rows as $row ) {
$processContent[$row['content_id']] = $row;
$processContent[$row['content_id']]['parameters'] = unserialize( $row['processor_parameters'] );
$sql2 = "UPDATE `".BIT_DB_PREFIX."liberty_process_queue` SET `begin_date`=? WHERE `content_id`=?";
$rs2 = $gBitSystem->mDb->getOne( $sql2, [ date( 'U' ), $row['content_id'] ] );
}
$gBitDb->CompleteTrans();
$log = [];
$total = date( 'U' );
foreach( array_keys( $processContent ) as $contentId ) {
$image = new FisheyeImage( null, $contentId );
$begin = date( 'U' );
if( !empty( $processContent[$contentId]['parameters']['resize_original'] ) ) {
$image->resizeOriginal( $processContent[$contentId]['parameters']['resize_original'] );
}
if( $image->renderThumbnails() ) {
$log[$contentId]['message'] = 'SUCCESS: Thumbnails created';
$sql3 = "UPDATE `".BIT_DB_PREFIX."liberty_process_queue` SET `begin_date`=?, `end_date`=? WHERE `content_id`=?";
$rs3 = $gBitSystem->mDb->getOne( $sql3, [ $begin, $gBitSystem->getUTCTime(), $contentId ] );
} else {
$log[$contentId]['message'] = ' ERROR: '.$image->mErrors['thumbnail'];
}
$log[$contentId]['time'] = date( 'd/M/Y:H:i:s O' );
$log[$contentId]['duration'] = date( 'U' ) - $begin;
$log[$contentId]['delay'] = date( 'U' ) - $total;
}
foreach( array_keys( $log ) as $contentId ) {
// generate something that kinda looks like apache common log format
print $contentId.' - - ['.$log[$contentId]['time'].'] "'.$log[$contentId]['message'].'" '.$log[$contentId]['duration']."seconds
\n";
}
if( count($processContent) ) {
print '# '.count($processContent)." images processed in ".(date( 'U' ) - $total)." seconds
\n";
}