У меня есть приложение, в котором пользователь загружает файл CSV или TXT, и моя система проверяет электронную почту из файла, а затем загружает результаты в каталог загрузки. но иногда, если размер файла большой, например, 1 миллион писем, проверка этого файла занимает некоторое время. и ссылка для скачивания файла не будет доступна. В этом случае я хочу показать пользователю, что мы проверяем его файл. это может занять несколько минут, и я знаю, как это сделать. Мне нужно знать, как сделать сценарий, который проверяет, не завершен ли статус, затем подождать некоторое время и попытаться снова загрузить файл. Примечание: сценарий go перейдет по ссылке и загрузит файл с file_put_contents (UPLOAD_DIRECTORY, fopen ($ url));
Вот функция, которая загружает файл
function downloadResultFilesInServer($file_id, $fileName) {
$downloadURL = "https://bulkapi.millionverifier.com/bulkapi/v2/download";
$key = VERIFIER_API_KEY;
$url = $downloadURL . "?key=$key&file_id=$file_id&filter=";
file_put_contents(UPLOAD_DIRECTORY . "/" . $fileName . "_OK_ONLY.csv", fopen($url . "ok", 'r'));
file_put_contents(UPLOAD_DIRECTORY . "/" . $fileName . "_OK_AND_CATCH_ALL.csv", fopen($url . "ok_and_catch_all", 'r'));
file_put_contents(UPLOAD_DIRECTORY . "/" . $fileName . "_UNKNOWN.csv", fopen($url . "unknown", 'r'));
file_put_contents(UPLOAD_DIRECTORY . "/" . $fileName . "_INVALID.csv", fopen($url . "invalid", 'r'));
file_put_contents(UPLOAD_DIRECTORY . "/" . $fileName . "_FULL_REPORT.csv", fopen($url . "all", 'r'));
}
Вот мои условия
// If verification is in progress insert the details in db
if (in_array($o["status"],['in_progress'])) {
$_SESSION['verifyInProgress'] = $o["file_id"];
insertEmailListResultsInDatabase($userId, $o, $fileNameNew, $connection);
} elseif (in_array($o["status"],['canceled'])) {
// if verification is cancelled show user alert
echo "<script>alert('Verification was canceled by user')</script>";
}
if (!in_array($o["status"],['finished', 'canceled'])) {
// keep trying to download file
}