Использую аякс запрос, и хочу чтобы отправить запрос, и не ждать пока обработается пхп скрипт.
Но получается так, что я отправляю аякс запрос, и не могу перейти на любую другую страницу сайта, пока не обработается php скрипт.
$.ajax({
url: url,
data: data
});
// php пока не посчитает не отдаст результат
<?php
$a = 0;
while($a < 100000000){
$a++;
}
return;
Как быть в такой ситуации, и что делать для решения вопроса?
Чтобы долго выполняющийся PHP скрипт (отправка почты) не "подвешивал" клиента, можно реализовать такую "асинхронную" технику: ваш PHP-скрипт send_mail_async.php инициирует запуск другого PHP-скрипта send_mail.php (который непосредственно занимается отправкой) и, не дожидаясь его окончания, возвращает результат.
$url = 'send_mail.php?blah-blah=123&...';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 50);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo "In a few minutes you will get an email. Check Spam folder ;)";
exit;
Пишу "асинхронную" в кавычках, т.к. для реальной асинхронности не хватает обработки результатов скрипта по окончании выполнения. Но для маленьго ненагруженного проекта сгодится.
UPDATE
Если нужна проверка результатов отправки, можно формировать уникальный идентификатор сеанса отправки и периодически с клиента посылать запрос с проверкой результата отправки, используя этот идентификатор. Соответственно, скрипт отправки должен сохранять результат в табличку: in progress, fail, success...
Решил вопрос, бок был у меня, вот в чем:
При аякс запросе, пыталась стартовать сессия поверх существующей, и оно вот так вот интересно отражало.
Решил следующим кодом
if( $_SESSION === NULL )
session_start();
И все окей. Всем спасибо
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники