Files
Pichome/misc/getinfo.php
2024-01-31 01:00:33 +08:00

75 lines
2.6 KiB
PHP

<?php
ignore_user_abort(true);
if (!defined('IN_OAOOA')) {
exit('Access Denied');
}
@set_time_limit(0);
ini_set('memory_limit', -1);
@ini_set('max_execution_time', 0);
$appids = [''];
$appdata = [];
foreach (DB::fetch_all("select appid,path,`type` from %t where (`type` = %d or type = %d)and isdelete < 1", array('pichome_vapp', 1, 3)) as $v) {
if ($v['type'] == 3 || IO::checkfileexists($v['path'], 1)) {
$appids[] = $v['appid'];
$appdata[$v['appid']] = $v;
}
}
if (empty($appids)) {
exit('success');
}
$locked = true;
/*$i = 0;
$processname = 'DZZ_LOCK_PICHOMEGETINFO'.$i;*/
$processnum = getglobal('config/infoprocessnum') ? getglobal('config/infoprocessnum') : 1;
for ($i = 0; $i < $processnum; $i++) {
$processname = 'DZZ_LOCK_PICHOMEGETINFO' . $i;
if (!dzz_process::islocked($processname, 60 * 15)) {
$locked = false;
break;
}
}
$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' => '进程已被锁定请稍后再试')));
}
//查询符合执行条件的数据
$datas = DB::fetch_all("select ra.rid,ra.getdonum from %t ra left join %t v on ra.appid=v.appid
where ra.isget < 1 and ra.appid in(%n) and ra.getinfotime < v.dateline
order by ra.getdonum asc limit $start,$limit", array('pichome_resources_attr', 'pichome_vapp', $appids));
if ($datas) {
foreach ($datas as $v) {
$processname1 = 'PICHOMEGETINFO_' . $v['rid'];
//dzz_process::unlock($processname1);
//如果当前数据是锁定状态则跳过
if (dzz_process::islocked($processname1, 60 * 5)) {
continue;
}
//更新当前数据获取缩略图执行次数和时间
C::t('pichome_resources_attr')->update($v['rid'],array('getdonum'=>intval($v['getdonum'])+1,'getinfotime'=>TIMESTAMP));
$resourcesdata = C::t('pichome_resources')->fetch_data_by_rid($v['rid']);
Hook::listen('pichomegetfileinfo', $resourcesdata);
dzz_process::unlock($processname1);
}
dzz_process::unlock($processname);
if (DB::fetch_all("select count(ra.rid) from %t ra left join %t v on ra.appid=v.appid where ra.isget=0 and ra.appid in(%n) and ra.getinfotime < v.dateline
", array('pichome_resources_attr', 'pichome_vapp', $appids))) {
sleep(2);
dfsockopen(getglobal('localurl') . 'misc.php?mod=getinfo', 0, '', '', false, '', 1);
}
} else {
dzz_process::unlock($processname);
}
exit('success' . $i);