2022-06-25 14:48:20 +08:00
< ? php
ignore_user_abort ( true );
2024-01-31 01:00:33 +08:00
if ( ! defined ( 'IN_OAOOA' )) {
2022-06-25 14:48:20 +08:00
exit ( 'Access Denied' );
}
2024-01-31 01:00:33 +08:00
@ set_time_limit ( 0 );
ini_set ( 'memory_limit' , - 1 );
@ ini_set ( 'max_execution_time' , 0 );
2022-06-25 14:48:20 +08:00
2024-01-31 01:00:33 +08:00
$locked = true ;
$processnum = getglobal ( 'config/convertprocessnum' ) ? getglobal ( 'config/convertprocessnum' ) : 1 ;
for ( $i = 0 ; $i < $processnum ; $i ++ ){
$processname = 'DZZ_LOCK_PICHOMEVIDEOCONVERT' . $i ;
if ( ! dzz_process :: islocked ( $processname , 60 * 15 )) {
$locked = false ;
break ;
}
2022-06-25 14:48:20 +08:00
}
2024-01-31 01:00:33 +08:00
//$processname = 'DZZ_LOCK_PICHOMEVIDEOCONVERT'.$i;
$limit = 100 ;
$start = $i * $limit ;
/* if ( ! dzz_process :: islocked ( $processname , 60 * 15 )) {
$locked = false ;
} */
//dzz_process::unlock($processname);
if ( $locked ) {
exit ( json_encode ( array ( 'error' => '进程已被锁定请稍后再试' )));
2022-06-25 14:48:20 +08:00
}
2024-01-31 01:00:33 +08:00
//查询符合执行条件的数据
$datas = DB :: fetch_all ( " select vr.* from %t vr left join %t r on vr.rid=r.rid left join %t v on v.appid = r.appid where vr.status < 2 and v.isdelete < 1 and vr.endtime < v.dateline
and v . type = 1 order by vr . jobnum asc limit $start , $limit " ,array('video_record','pichome_resources','pichome_vapp'));
if ( $datas ){
foreach ( $datas as $v ){
$processname1 = 'PICHOMEVIDEOCONVERT' . $v [ 'id' ];
dzz_process :: unlock ( $processname1 );
//如果当前数据是锁定状态则跳过
if ( dzz_process :: islocked ( $processname1 , 60 * 15 )) {
continue ;
}
//更新当前数据获取缩略图执行次数和时间
C :: t ( 'video_record' ) -> update ( $v [ 'id' ], array ( 'jobnum' => intval ( $v [ 'jobnum' ]) + 1 , 'endtime' => strtotime ( 'now' )));
if ( $v [ 'ctype' ] == 0 ){
include_once DZZ_ROOT . 'dzz' . BS . 'ffmpeg' . BS . 'class' . BS . 'class_fmpeg.php' ;
$fm = new fmpeg ();
$ret = $fm -> convert ( $v [ 'rid' ], $v [ 'format' ], $v [ 'videoquality' ]);
}
elseif ( $v [ 'ctype' ] == 2 ){
include_once DZZ_ROOT . 'dzz' . BS . 'qcos' . BS . 'class' . BS . 'class_video.php' ;
$resourcesdata = C :: t ( 'pichome_resources' ) -> fetch_data_by_rid ( $v [ 'rid' ]);
$patharr = explode ( ':' , $resourcesdata [ 'realpath' ]);
if ( $patharr [ 0 ] != 'QCOS' ){
dzz_process :: unlock ( $processname1 );
continue ;
}
//获取存储配置信息
$did = $patharr [ 1 ];
$qcosconfig = C :: t ( 'connect_storage' ) -> fetch ( $did );
$hostarr = explode ( ':' , $qcosconfig [ 'hostname' ]);
$config = [
'secretId' => trim ( $qcosconfig [ 'access_id' ]),
'secretKey' => dzzdecode ( $qcosconfig [ 'access_key' ], 'QCOS' ),
'region' => $hostarr [ 1 ],
'schema' => $hostarr [ 0 ],
'bucket' => trim ( $qcosconfig [ 'bucket' ])
];
$fpatharr = explode ( '/' , $resourcesdata [ 'realpath' ]);
unset ( $fpatharr [ 0 ]);
$ofpath = implode ( '/' , $fpatharr );
$object = str_replace ( BS , '/' , $ofpath );
$outputpath = 'tmppichomethumb/' . $resourcesdata [ 'appid' ] . '/' . md5 ( $resourcesdata [ 'rid' ]) . '.' . $v [ 'format' ];
//创建转码任务
$fm = new video ( $config );
$data = $fm -> create_mediajobs ( $object , $outputpath , $v [ 'videoquality' ]);
if ( $data [ 'error' ]){
C :: t ( 'video_record' ) -> update ( $v [ 'id' ], array ( 'status' =>- 1 , 'endtime' => strtotime ( 'now' ), 'error' => $data [ 'error' ]));
} else {
unset ( $data [ 'success' ]);
C :: t ( 'video_record' ) -> update ( $v [ 'id' ], $data );
}
}
2022-06-25 14:48:20 +08:00
2024-01-31 01:00:33 +08:00
dzz_process :: unlock ( $processname1 );
}
2022-06-25 14:48:20 +08:00
dzz_process :: unlock ( $processname );
2024-01-31 01:00:33 +08:00
if ( DB :: fetch_all ( " select count(vr.id) from %t vr left join %t r on vr.rid=r.rid left join %t v on v.appid = r.appid where vr.status < 2 and v.isdelete < 1 and vr.endtime < v.dateline
and v . type = 1 order by vr . jobnum asc " ,array('video_record','pichome_resources','pichome_vapp'))) {
sleep ( 2 );
dfsockopen ( getglobal ( 'localurl' ) . 'index.php?mod=pichome&op=getinfo' , 0 , '' , '' , false , '' , 1 );
} else {
sleep ( 2 );
dfsockopen ( getglobal ( 'localurl' ) . 'index.php?mod=pichome&op=getConvertStatus' , 0 , '' , '' , false , '' , 1 );
}
} else {
2022-06-25 14:48:20 +08:00
dzz_process :: unlock ( $processname );
}
2024-01-31 01:00:33 +08:00
exit ( 'success' . $i );