Update taskExecuter.php
This commit is contained in:
parent
5011f714e1
commit
59b1a95e02
|
|
@ -5,7 +5,7 @@ include "emailSender.php";
|
||||||
$maxExecutionTime = 120;
|
$maxExecutionTime = 120;
|
||||||
$taskDir = __DIR__ . '/tasks';
|
$taskDir = __DIR__ . '/tasks';
|
||||||
$downloadDir = __DIR__ . '/download';
|
$downloadDir = __DIR__ . '/download';
|
||||||
$downloadUrlBase = 'https://zefix.silias.ch/download';
|
$downloadUrlBase = 'download';
|
||||||
|
|
||||||
$minTaskOldness = 10;
|
$minTaskOldness = 10;
|
||||||
$latesEndTime = time() + $maxExecutionTime;
|
$latesEndTime = time() + $maxExecutionTime;
|
||||||
|
|
@ -37,19 +37,26 @@ function doRequest($data, $filename, $username, $password)
|
||||||
if (!is_array($responseObject)) {
|
if (!is_array($responseObject)) {
|
||||||
logMsg("ERROR: API response is not valid JSON");
|
logMsg("ERROR: API response is not valid JSON");
|
||||||
logMsg("Raw response: " . htmlspecialchars($response));
|
logMsg("Raw response: " . htmlspecialchars($response));
|
||||||
return ['status' => 'error'];
|
return ['status' => 'error', 'writtenRows' => 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (array_key_exists("error", $responseObject)) {
|
if (array_key_exists("error", $responseObject)) {
|
||||||
|
$errorCode = $responseObject['error']['code'] ?? '';
|
||||||
|
|
||||||
|
if ($errorCode === 'API.ZFR.SEARCH.NORESULT') {
|
||||||
|
logMsg("API returned no results. Treating as empty search result.");
|
||||||
|
return ['status' => 'empty', 'writtenRows' => 0];
|
||||||
|
}
|
||||||
|
|
||||||
logMsg("ERROR: API returned error");
|
logMsg("ERROR: API returned error");
|
||||||
logMsg("API error response: " . htmlspecialchars(json_encode($responseObject)));
|
logMsg("API error response: " . htmlspecialchars(json_encode($responseObject)));
|
||||||
return ['status' => 'error'];
|
return ['status' => 'error', 'writtenRows' => 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($responseObject['list']) || !is_array($responseObject['list'])) {
|
if (!isset($responseObject['list']) || !is_array($responseObject['list'])) {
|
||||||
logMsg("ERROR: API response has no valid list");
|
logMsg("ERROR: API response has no valid list");
|
||||||
logMsg("API response: " . htmlspecialchars(json_encode($responseObject)));
|
logMsg("API response: " . htmlspecialchars(json_encode($responseObject)));
|
||||||
return ['status' => 'error'];
|
return ['status' => 'error', 'writtenRows' => 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
$companies = $responseObject['list'];
|
$companies = $responseObject['list'];
|
||||||
|
|
@ -57,7 +64,7 @@ function doRequest($data, $filename, $username, $password)
|
||||||
|
|
||||||
if (count($companies) === 0) {
|
if (count($companies) === 0) {
|
||||||
logMsg("No companies found in this request.");
|
logMsg("No companies found in this request.");
|
||||||
return ['status' => 'empty'];
|
return ['status' => 'empty', 'writtenRows' => 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
$isNewFile = !file_exists($filename);
|
$isNewFile = !file_exists($filename);
|
||||||
|
|
@ -65,7 +72,7 @@ function doRequest($data, $filename, $username, $password)
|
||||||
|
|
||||||
if (!$file) {
|
if (!$file) {
|
||||||
logMsg("ERROR: Could not open CSV file for writing");
|
logMsg("ERROR: Could not open CSV file for writing");
|
||||||
return ['status' => 'error'];
|
return ['status' => 'error', 'writtenRows' => 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($isNewFile) {
|
if ($isNewFile) {
|
||||||
|
|
@ -128,13 +135,13 @@ function doRequest($data, $filename, $username, $password)
|
||||||
|
|
||||||
fclose($file);
|
fclose($file);
|
||||||
|
|
||||||
logMsg("Rows written to CSV: " . $writtenRows);
|
logMsg("Rows written to CSV in this request: " . $writtenRows);
|
||||||
logMsg("CSV exists after writing: " . (file_exists($filename) ? "YES" : "NO"));
|
logMsg("CSV exists after writing: " . (file_exists($filename) ? "YES" : "NO"));
|
||||||
logMsg("CSV size after writing: " . (file_exists($filename) ? filesize($filename) : 0) . " bytes");
|
logMsg("CSV size after writing: " . (file_exists($filename) ? filesize($filename) : 0) . " bytes");
|
||||||
|
|
||||||
if ($writtenRows === 0) {
|
if ($writtenRows === 0) {
|
||||||
logMsg("No rows could be written although search returned companies.");
|
logMsg("ERROR: Search returned companies, but no rows could be written.");
|
||||||
return ['status' => 'error'];
|
return ['status' => 'error', 'writtenRows' => 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($responseObject['hasMoreResults'])) {
|
if (!empty($responseObject['hasMoreResults'])) {
|
||||||
|
|
@ -143,12 +150,17 @@ function doRequest($data, $filename, $username, $password)
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'status' => 'more',
|
'status' => 'more',
|
||||||
'nextOffset' => $nextOffset
|
'nextOffset' => $nextOffset,
|
||||||
|
'writtenRows' => $writtenRows
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
logMsg("No more results. Request completed.");
|
logMsg("No more results. Request completed.");
|
||||||
return ['status' => 'done'];
|
|
||||||
|
return [
|
||||||
|
'status' => 'done',
|
||||||
|
'writtenRows' => $writtenRows
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
while ($latesEndTime - time() > 30) {
|
while ($latesEndTime - time() > 30) {
|
||||||
|
|
@ -207,40 +219,68 @@ while ($latesEndTime - time() > 30) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isset($task['stats']) || !is_array($task['stats'])) {
|
||||||
|
$task['stats'] = [
|
||||||
|
'totalWrittenRows' => 0,
|
||||||
|
'emptyRequests' => 0,
|
||||||
|
'completedRequests' => 0,
|
||||||
|
'failedRequests' => 0
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
$csvFile = str_replace(".json", ".csv", $downloadDir . '/' . $taskFileName);
|
$csvFile = str_replace(".json", ".csv", $downloadDir . '/' . $taskFileName);
|
||||||
$csvUrl = $downloadUrlBase . '/' . basename($csvFile);
|
$csvUrl = $downloadUrlBase . '/' . basename($csvFile);
|
||||||
|
|
||||||
if (count($task['requests']) > 0) {
|
if (count($task['requests']) > 0) {
|
||||||
$result = doRequest($task['requests'][0], $csvFile, $username, $password);
|
$result = doRequest($task['requests'][0], $csvFile, $username, $password);
|
||||||
|
|
||||||
|
if (isset($result['writtenRows'])) {
|
||||||
|
$task['stats']['totalWrittenRows'] += $result['writtenRows'];
|
||||||
|
}
|
||||||
|
|
||||||
if ($result['status'] === 'more') {
|
if ($result['status'] === 'more') {
|
||||||
$task['requests'][0]['offset'] = $result['nextOffset'];
|
$task['requests'][0]['offset'] = $result['nextOffset'];
|
||||||
logMsg("Request updated with next offset");
|
logMsg("Request updated with next offset");
|
||||||
} elseif ($result['status'] === 'done') {
|
} elseif ($result['status'] === 'done') {
|
||||||
|
$task['stats']['completedRequests']++;
|
||||||
array_shift($task['requests']);
|
array_shift($task['requests']);
|
||||||
logMsg("Request completed and removed from task");
|
logMsg("Request completed and removed from task");
|
||||||
} elseif ($result['status'] === 'empty') {
|
} elseif ($result['status'] === 'empty') {
|
||||||
$task['noResults'] = true;
|
$task['stats']['emptyRequests']++;
|
||||||
|
$task['stats']['completedRequests']++;
|
||||||
array_shift($task['requests']);
|
array_shift($task['requests']);
|
||||||
logMsg("Request had no results and was removed from task");
|
logMsg("Request had no results and was removed from task");
|
||||||
} else {
|
} else {
|
||||||
|
$task['stats']['failedRequests']++;
|
||||||
|
file_put_contents($taskFilePath, json_encode($task));
|
||||||
logMsg("ERROR: Request failed. Task will NOT be deleted and email will NOT be sent.");
|
logMsg("ERROR: Request failed. Task will NOT be deleted and email will NOT be sent.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
file_put_contents($taskFilePath, json_encode($task));
|
file_put_contents($taskFilePath, json_encode($task));
|
||||||
logMsg("Task file updated.");
|
logMsg("Task file updated.");
|
||||||
|
logMsg("Total written rows so far: " . $task['stats']['totalWrittenRows']);
|
||||||
|
logMsg("Empty requests so far: " . $task['stats']['emptyRequests']);
|
||||||
|
logMsg("Completed requests so far: " . $task['stats']['completedRequests']);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
logMsg("All requests completed. Preparing email.");
|
logMsg("All requests completed. Preparing email.");
|
||||||
|
logMsg("Total written rows: " . ($task['stats']['totalWrittenRows'] ?? 0));
|
||||||
|
logMsg("Empty requests: " . ($task['stats']['emptyRequests'] ?? 0));
|
||||||
|
logMsg("Completed requests: " . ($task['stats']['completedRequests'] ?? 0));
|
||||||
|
logMsg("Failed requests: " . ($task['stats']['failedRequests'] ?? 0));
|
||||||
|
|
||||||
logMsg("Final CSV path: " . $csvFile);
|
logMsg("Final CSV path: " . $csvFile);
|
||||||
logMsg("Final CSV URL: " . $csvUrl);
|
logMsg("Final CSV URL: " . $csvUrl);
|
||||||
logMsg("CSV exists before email: " . (file_exists($csvFile) ? "YES" : "NO"));
|
logMsg("CSV exists before email: " . (file_exists($csvFile) ? "YES" : "NO"));
|
||||||
logMsg("CSV size before email: " . (file_exists($csvFile) ? filesize($csvFile) : 0) . " bytes");
|
logMsg("CSV size before email: " . (file_exists($csvFile) ? filesize($csvFile) : 0) . " bytes");
|
||||||
|
|
||||||
if (!empty($task['noResults']) && (!file_exists($csvFile) || filesize($csvFile) === 0)) {
|
$totalWrittenRows = $task['stats']['totalWrittenRows'] ?? 0;
|
||||||
logMsg("No results found. Sending no-results email.");
|
|
||||||
|
if ($totalWrittenRows === 0) {
|
||||||
|
logMsg("All requests completed but no rows were exported. Sending no-results email.");
|
||||||
|
|
||||||
sendEmail(
|
sendEmail(
|
||||||
$task['email'],
|
$task['email'],
|
||||||
|
|
@ -254,11 +294,11 @@ while ($latesEndTime - time() > 30) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!file_exists($csvFile) || filesize($csvFile) === 0) {
|
if (!file_exists($csvFile) || filesize($csvFile) === 0) {
|
||||||
logMsg("ERROR: CSV file missing or empty. Email will NOT be sent.");
|
logMsg("ERROR: CSV file missing or empty, although rows were counted. Email will NOT be sent.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
logMsg("CSV exists. Sending email with download link.");
|
logMsg("CSV exists and contains exported rows. Sending email with download link.");
|
||||||
|
|
||||||
sendEmail(
|
sendEmail(
|
||||||
$task['email'],
|
$task['email'],
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue