Файл: include/function_queue.php
Строк: 188
<?php
/*|-------------------------------------------------
|*| AVS Conversion Queue Functions
|*|-------------------------------------------------
|*/
defined('_VALID') or die('Restricted Access!');
function remove_overdue($table) {
global $config, $conn;
$timeout = $config['q_timeout'];
$overdue = time() - ($timeout * 3600);
$sql= "DELETE FROM ".$table." WHERE status = '1' AND start < '".$overdue."'";
$conn->execute($sql);
}
function active_conversions($table) {
global $conn;
$sql = "SELECT * FROM ".$table." WHERE status = '1'";
$rs = $conn->execute($sql);
return $conn->Affected_Rows();
}
function check_q() {
global $config, $conn;
remove_overdue('conversion_queue_fp');
if (active_conversions('conversion_queue_fp') < intval($config['q_limit'])) {
$sql = "SELECT * FROM conversion_queue_fp WHERE status = '0' ORDER BY addtime ASC LIMIT ".intval($config['q_limit']);
$rs = $conn->execute($sql);
if ($conn->Affected_Rows()>0) {
$videos = $rs->getrows();
foreach($videos as $video) {
$video_name = $video['video_name'];
$video_id = $video['VID'];
$video_path = $video['video_path'];
$script = $config['BASE_DIR']."/scripts/convert_videos_fp.php";
if(file_exists($video_path)) {
$cmd = $config['phppath']." ".$script." ".$video_name." ".$video_id." ".$video_path."";
$sql = "UPDATE conversion_queue_fp SET status='1', start = '".time()."' WHERE VID = '".$video_id."' LIMIT 1";
$conn->execute($sql);
log_in_back($config['LOG_DIR']. '/' .$video_id. '.log', $cmd);
$lg = $config['LOG_DIR']. '/' .$video_id. '.log2';
run_in_bg($cmd.' > '.$lg);
return true;
} else {
$sql = "DELETE FROM conversion_queue_fp WHERE VID = '".$video_id."' LIMIT 1";
$conn->execute($sql);
}
}
unset($videos);
}
}
remove_overdue('conversion_queue_sp');
if (active_conversions('conversion_queue_sp') < 1) {
$sql = "SELECT * FROM conversion_queue_sp WHERE STATUS = '0' ORDER BY addtime LIMIT 1";
$rs = $conn->execute($sql);
if ($conn->Affected_Rows()==1) {
$video_name = $rs->fields['video_name'];
$video_id = $rs->fields['VID'];
$video_path = $rs->fields['video_path'];
$skip = $rs->fields['skip'];
$script = $config['BASE_DIR']."/scripts/convert_videos_sp.php";
if(file_exists($video_path)) {
$cmd = $config['phppath']." ".$script." ".$video_name." ".$video_id." ".$video_path." ".$skip."";
$sql = "UPDATE conversion_queue_sp SET status='1', start = '".time()."' WHERE VID = '".$video_id."' LIMIT 1";
$conn->execute($sql);
log_in_back($config['LOG_DIR']. '/' .$video_id. '.log', $cmd);
$lg = $config['LOG_DIR']. '/' .$video_id. '.log3';
run_in_bg($cmd.' > '.$lg);
return true;
} else {
$sql = "DELETE FROM conversion_queue_sp WHERE VID = '".$video_id."' LIMIT 1";
$conn->execute($sql);
}
}
}
return false;
}
function insert_into_q_fp($vid, $video_name, $video_path) {
global $conn;
$sql = "SELECT * FROM conversion_queue_fp WHERE VID = '".$vid."' LIMIT 1";
$rs = $conn->execute($sql);
if ($conn->Affected_Rows()!=1) {
$sql = "SELECT * FROM video WHERE VID = '".$vid."' LIMIT 1";
$rs = $conn->execute($sql);
$uid = $rs->fields['UID'];
$title = $rs->fields['title'];
$sql = "INSERT INTO conversion_queue_fp SET
VID = '".intval($vid)."',
UID = '".intval($uid)."',
video_name = ".$conn->qStr($video_name).",
video_path = ".$conn->qStr($video_path).",
title = ".$conn->qStr($title).",
addtime = '".time()."'";
$conn->execute($sql);
}
check_q();
}
function insert_into_q_sp($vid, $skip) {
global $conn;
$sql = "SELECT * FROM conversion_queue_sp WHERE VID = '".$vid."' LIMIT 1";
$rs = $conn->execute($sql);
if ($conn->Affected_Rows()!=1) {
$sql = "SELECT * FROM conversion_queue_fp WHERE VID = '".$vid."' LIMIT 1";
$rs = $conn->execute($sql);
if ($conn->Affected_Rows()==1) {
$uid = $rs->fields['UID'];
$video_name = $rs->fields['video_name'];
$video_path = $rs->fields['video_path'];
$title = $rs->fields['title'];
$sql = "INSERT INTO conversion_queue_sp SET
VID = '".$vid."',
UID = '".intval($uid)."',
video_name = ".$conn->qStr($video_name).",
video_path = ".$conn->qStr($video_path).",
skip = '".$skip."',
title = ".$conn->qStr($title).",
addtime = '".time()."'";
$conn->execute($sql);
}
}
check_q();
}
function log_in_back ($file_path, $text) {
$file_dir = dirname($file_path);
if( !file_exists($file_dir) or !is_dir($file_dir) or !is_writable($file_dir) ) {
return false;
}
$write_mode = 'w';
if( file_exists($file_path) && is_file($file_path) && is_writable($file_path) ) {
$write_mode = 'a';
}
if( !$handle = fopen($file_path, $write_mode) ) {
return false;
}
if( fwrite($handle, $text. "n") == FALSE ) {
return false;
}
@fclose($handle);
}
function run_in_bg($Command, $Priority = 0) {
if($Priority) {
$PID = shell_exec("nohup nice -n $Priority $Command 2> /dev/null & echo $!");
} else {
$PID = shell_exec("nohup $Command 2> /dev/null & echo $!");
}
return($PID);
}
?>