mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-19 22:14:33 +00:00
Extend WebDAV scan diagnostic with worker lock check
This commit is contained in:
@@ -35,7 +35,7 @@ $_SERVER['REQUEST_URI'] = '/';
|
|||||||
$_SERVER['SCRIPT_NAME'] = '/plugins/bratonien_tools/runtime/lib/webdav-scan-diagnostic.php';
|
$_SERVER['SCRIPT_NAME'] = '/plugins/bratonien_tools/runtime/lib/webdav-scan-diagnostic.php';
|
||||||
$_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'];
|
$_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'];
|
||||||
$_SERVER['QUERY_STRING'] = '';
|
$_SERVER['QUERY_STRING'] = '';
|
||||||
$_SERVER['HTTP_USER_AGENT'] = 'Bratonien-WebDAV-Scan-Diagnostic/0.9.7.1.20';
|
$_SERVER['HTTP_USER_AGENT'] = 'Bratonien-WebDAV-Scan-Diagnostic/0.9.7.1.21';
|
||||||
$_SERVER['HTTPS'] = 'off';
|
$_SERVER['HTTPS'] = 'off';
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -54,6 +54,29 @@ try
|
|||||||
if ($state_dir === '') throw new RuntimeException('Connector-State-Verzeichnis fehlt.');
|
if ($state_dir === '') throw new RuntimeException('Connector-State-Verzeichnis fehlt.');
|
||||||
if ($gallery_root === '') throw new RuntimeException('Shadow-Tree-Pfad fehlt in der Connector-Konfiguration.');
|
if ($gallery_root === '') throw new RuntimeException('Shadow-Tree-Pfad fehlt in der Connector-Konfiguration.');
|
||||||
|
|
||||||
|
$lock_file = $state_dir.'/webdav-cache-warmup.lock';
|
||||||
|
$worker_lock_state = 'open_failed';
|
||||||
|
$worker_lock_detail = '';
|
||||||
|
$lock_handle = @fopen($lock_file, 'c');
|
||||||
|
if (is_resource($lock_handle))
|
||||||
|
{
|
||||||
|
if (@flock($lock_handle, LOCK_EX | LOCK_NB))
|
||||||
|
{
|
||||||
|
$worker_lock_state = 'free';
|
||||||
|
@flock($lock_handle, LOCK_UN);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$worker_lock_state = 'busy';
|
||||||
|
$worker_lock_detail = 'Ein anderer Prozess haelt den WebDAV-Worker-Lock.';
|
||||||
|
}
|
||||||
|
fclose($lock_handle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$worker_lock_detail = 'Worker-Lock-Datei konnte nicht geoeffnet werden.';
|
||||||
|
}
|
||||||
|
|
||||||
$mapping_file = $state_dir.'/webdav-map.json';
|
$mapping_file = $state_dir.'/webdav-map.json';
|
||||||
if (!is_file($mapping_file) || !is_readable($mapping_file)) throw new RuntimeException('WebDAV-Mapping fehlt oder ist nicht lesbar: '.$mapping_file);
|
if (!is_file($mapping_file) || !is_readable($mapping_file)) throw new RuntimeException('WebDAV-Mapping fehlt oder ist nicht lesbar: '.$mapping_file);
|
||||||
$mapping = json_decode((string)file_get_contents($mapping_file), true);
|
$mapping = json_decode((string)file_get_contents($mapping_file), true);
|
||||||
@@ -124,12 +147,17 @@ try
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scan_ok = ($shadow_links > 0 && $matched === $shadow_links && $broken === 0 && $unmapped === 0 && $duplicates === 0);
|
||||||
$payload = array(
|
$payload = array(
|
||||||
'ok'=>($shadow_links > 0 && $matched === $shadow_links && $broken === 0 && $unmapped === 0 && $duplicates === 0),
|
'ok'=>$scan_ok && $worker_lock_state !== 'open_failed',
|
||||||
|
'scan_ok'=>$scan_ok,
|
||||||
'connection_id'=>$connection_id,
|
'connection_id'=>$connection_id,
|
||||||
'state_dir'=>$state_dir,
|
'state_dir'=>$state_dir,
|
||||||
'gallery_root'=>$gallery_root,
|
'gallery_root'=>$gallery_root,
|
||||||
'mapping_file'=>$mapping_file,
|
'mapping_file'=>$mapping_file,
|
||||||
|
'worker_lock_file'=>$lock_file,
|
||||||
|
'worker_lock_state'=>$worker_lock_state,
|
||||||
|
'worker_lock_detail'=>$worker_lock_detail,
|
||||||
'mapping_files'=>count($mapped_files),
|
'mapping_files'=>count($mapped_files),
|
||||||
'shadow_links'=>$shadow_links,
|
'shadow_links'=>$shadow_links,
|
||||||
'matched'=>$matched,
|
'matched'=>$matched,
|
||||||
|
|||||||
Reference in New Issue
Block a user