don't convert to xlsx, send as csv instead to prevent memory exhausting
This commit is contained in:
parent
3bbf1f8ddc
commit
60d70072b1
|
|
@ -1,7 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
include "zefixAPI.php";
|
include "zefixAPI.php";
|
||||||
include "read_write_xlsx.php";
|
|
||||||
|
|
||||||
include "emailSender.php";
|
include "emailSender.php";
|
||||||
|
|
||||||
$maxExecutionTime = 120;
|
$maxExecutionTime = 120;
|
||||||
|
|
@ -19,31 +17,48 @@ function doRequest($data, $filename, $username, $password)
|
||||||
{
|
{
|
||||||
$response = sendAPICompanySearchRequest($username, $password, $data);
|
$response = sendAPICompanySearchRequest($username, $password, $data);
|
||||||
$responseObject = json_decode($response, true);
|
$responseObject = json_decode($response, true);
|
||||||
|
|
||||||
if(array_key_exists("error", $responseObject)) {
|
if(array_key_exists("error", $responseObject)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$companyArray = $responseObject['list'];
|
$companyArray = $responseObject['list'];
|
||||||
$companyData = array();
|
$companyData = array();
|
||||||
|
|
||||||
foreach ($companyArray as $company) {
|
foreach ($companyArray as $company) {
|
||||||
$companyFullData = json_decode(sendAPICompanyInfoRequest($username, $password, $company['uid']), true)[0];
|
$companyFullData = json_decode(sendAPICompanyInfoRequest($username, $password, $company['uid']), true)[0];
|
||||||
$companyData[] = [$companyFullData['name'], $companyFullData['address']['careOf'], $companyFullData['address']['street'], $companyFullData['address']['houseNumber'], $companyFullData['address']['swissZipCode'], $companyFullData['address']['city'],$companyFullData['uid'],$companyFullData['legalSeat'],$companyFullData['legalForm']['name']['de'],$companyFullData['status'],$companyFullData['sogcDate'],$companyFullData['deletionDate']];
|
$companyData[] = [
|
||||||
|
$companyFullData['name'],
|
||||||
|
$companyFullData['address']['careOf'],
|
||||||
|
$companyFullData['address']['street'],
|
||||||
|
$companyFullData['address']['houseNumber'],
|
||||||
|
$companyFullData['address']['swissZipCode'],
|
||||||
|
$companyFullData['address']['city'],
|
||||||
|
$companyFullData['uid'],
|
||||||
|
$companyFullData['legalSeat'],
|
||||||
|
$companyFullData['legalForm']['name']['de'],
|
||||||
|
$companyFullData['status'],
|
||||||
|
$companyFullData['sogcDate'],
|
||||||
|
$companyFullData['deletionDate']
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!file_exists($filename)) {
|
if (!file_exists($filename)) {
|
||||||
// If File doesn't exist yet
|
|
||||||
$file = fopen($filename, 'w');
|
$file = fopen($filename, 'w');
|
||||||
if($file) {
|
if($file) {
|
||||||
fputcsv($file, ['name', 'careOf', 'street', 'houseNumber', 'swissZipCode', 'city', 'uid', 'legalSeat', 'legalForm', 'status', 'sogcDate', 'deletionDate'], ',', '"', "\\");
|
fputcsv($file, ['name', 'careOf', 'street', 'houseNumber', 'swissZipCode', 'city', 'uid', 'legalSeat', 'legalForm', 'status', 'sogcDate', 'deletionDate'], ',', '"', "\\");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// If file already exists
|
|
||||||
$file = fopen($filename, 'a');
|
$file = fopen($filename, 'a');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($file) {
|
if ($file) {
|
||||||
foreach ($companyData as $row){
|
foreach ($companyData as $row){
|
||||||
fputcsv($file, $row, ',', '"', "\\");
|
fputcsv($file, $row, ',', '"', "\\");
|
||||||
}
|
}
|
||||||
fclose($file);
|
fclose($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($responseObject['hasMoreResults']) {
|
if($responseObject['hasMoreResults']) {
|
||||||
return $responseObject['maxOffset'] + 50;
|
return $responseObject['maxOffset'] + 50;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -51,63 +66,45 @@ function doRequest($data, $filename, $username, $password)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Stop executing bevore reaching PHP Max Execution Time
|
|
||||||
function convertcsvToXlsx(string $csvFile, string $xlsxFile)
|
|
||||||
{
|
|
||||||
$csvData = [];
|
|
||||||
|
|
||||||
if (($handle = fopen($csvFile, "r")) !== false) {
|
|
||||||
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
|
|
||||||
$csvData[] = $data;
|
|
||||||
}
|
|
||||||
fclose($handle);
|
|
||||||
} else {
|
|
||||||
echo "Failed to open $csvFile for reading.";
|
|
||||||
}
|
|
||||||
|
|
||||||
write_xlsxFile($xlsxFile, $csvData);
|
|
||||||
}
|
|
||||||
|
|
||||||
while($latesEndTime - time() > 30){
|
while($latesEndTime - time() > 30){
|
||||||
// If the directory for Tasks is already created
|
|
||||||
if(is_dir($taskDir)) {
|
if(is_dir($taskDir)) {
|
||||||
$taskfiles = scandir($taskDir);
|
$taskfiles = scandir($taskDir);
|
||||||
$taskfiles = array_diff($taskfiles, array('.', '..'));
|
$taskfiles = array_diff($taskfiles, array('.', '..'));
|
||||||
sort($taskfiles);
|
sort($taskfiles);
|
||||||
// if there are any taks which are older then min oldness. To be sure the file writing process is finished.
|
|
||||||
if(count($taskfiles) > 0 && intval(explode("-", $taskfiles[0])[0]) + $minTaskOldness < time()) {
|
if(count($taskfiles) > 0 && intval(explode("-", $taskfiles[0])[0]) + $minTaskOldness < time()) {
|
||||||
$taskString = file_get_contents($taskDir.'/'.$taskfiles[0]);
|
$taskString = file_get_contents($taskDir.'/'.$taskfiles[0]);
|
||||||
$task = json_decode($taskString, true);
|
$task = json_decode($taskString, true);
|
||||||
|
|
||||||
// if there are any requests to do, do the first
|
|
||||||
if(count($task['requests']) > 0) {
|
if(count($task['requests']) > 0) {
|
||||||
$nextOffset = doRequest($task['requests'][0], str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]), $username , $password);
|
$csvFile = str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]);
|
||||||
|
|
||||||
|
$nextOffset = doRequest($task['requests'][0], $csvFile, $username, $password);
|
||||||
|
|
||||||
if($nextOffset){
|
if($nextOffset){
|
||||||
$task['requests'][0]['offset'] = $nextOffset;
|
$task['requests'][0]['offset'] = $nextOffset;
|
||||||
} else {
|
} else {
|
||||||
array_shift($task['requests']);
|
array_shift($task['requests']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$taskString = json_encode($task);
|
$taskString = json_encode($task);
|
||||||
$taskfile = fopen($taskDir.'/'.$taskfiles[0], 'w');
|
$taskfile = fopen($taskDir.'/'.$taskfiles[0], 'w');
|
||||||
|
|
||||||
if($taskfile){
|
if($taskfile){
|
||||||
fwrite($taskfile, $taskString);
|
fwrite($taskfile, $taskString);
|
||||||
fclose($taskfile);
|
fclose($taskfile);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
// if there are no Requests left, send the E-Mail
|
$csvFile = str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]);
|
||||||
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]);
|
unlink($taskDir.'/'.$taskfiles[0]);
|
||||||
|
|
||||||
echo "Task File deleted";
|
echo "Task File deleted";
|
||||||
echo "<br>";
|
echo "<br>";
|
||||||
sendEmail($task['email'], str_replace(".json", ".xlsx", $downloadDir.'/'.$taskfiles[0]), $smtppassword);
|
|
||||||
|
sendEmail($task['email'], $csvFile, $smtppassword);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// acutal Time - start time
|
|
||||||
echo "nothing to do after: ".strval(time() - ($latesEndTime - $maxExecutionTime));
|
echo "nothing to do after: ".strval(time() - ($latesEndTime - $maxExecutionTime));
|
||||||
echo "sleeping 10 seconds";
|
echo "sleeping 10 seconds";
|
||||||
echo "<br>";
|
echo "<br>";
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue