Send List as csv instead of converting to xlsx to prevent memory exhausting

This commit is contained in:
Roman Schenk 2026-05-17 15:50:35 +02:00
parent a914efc011
commit 2d7d975c8b
1 changed files with 42 additions and 12 deletions

View File

@ -72,45 +72,75 @@ function convertcsvToXlsx(string $csvFile, string $xlsxFile)
}
while($latesEndTime - time() > 30){
// If the directory for Tasks is already created
if(is_dir($taskDir)) {
$taskfiles = scandir($taskDir);
$taskfiles = array_diff($taskfiles, array('.', '..'));
sort($taskfiles);
// if there are any taks which are older then min oldness. To be sure the file writing process is finished.
// if there are any tasks which are older then min oldness
if(count($taskfiles) > 0 && intval(explode("-", $taskfiles[0])[0]) + $minTaskOldness < time()) {
$taskString = file_get_contents($taskDir.'/'.$taskfiles[0]);
$taskFilePath = $taskDir.'/'.$taskfiles[0];
$csvFilePath = str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]);
$taskString = file_get_contents($taskFilePath);
$task = json_decode($taskString, true);
// if there are any requests to do, do the first
if(count($task['requests']) > 0) {
$nextOffset = doRequest($task['requests'][0], str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]), $username , $password);
$nextOffset = doRequest(
$task['requests'][0],
$csvFilePath,
$username,
$password
);
if($nextOffset){
$task['requests'][0]['offset'] = $nextOffset;
} else {
array_shift($task['requests']);
}
$taskString = json_encode($task);
$taskfile = fopen($taskDir.'/'.$taskfiles[0], 'w');
$taskfile = fopen($taskFilePath, 'w');
if($taskfile){
fwrite($taskfile, $taskString);
fclose($taskfile);
}
}
// if there are no Requests left, send the E-Mail
else {
convertcsvToXlsx(str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]), str_replace(".json", ".xlsx", $downloadDir.'/'.$taskfiles[0]));
unlink(str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]));
unlink($taskDir.'/'.$taskfiles[0]);
} else {
// No requests left -> send CSV directly by email
unlink($taskFilePath);
echo "Task File deleted";
echo "<br>";
sendEmail($task['email'], str_replace(".json", ".xlsx", $downloadDir.'/'.$taskfiles[0]), $smtppassword);
sendEmail(
$task['email'],
$csvFilePath,
$smtppassword
);
echo "CSV sent by email";
echo "<br>";
}
} else {
// acutal Time - start time
// actual Time - start time
echo "nothing to do after: ".strval(time() - ($latesEndTime - $maxExecutionTime));
echo "<br>";
echo "sleeping 10 seconds";
echo "<br>";
sleep(10);
}
}