Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.02.2023, 20:29
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

Сообщение от BorisJe
Пользователю показать страницу что все ок. А дальше все просто само отрабатывает. Результат успеха не важен.
https://dron.by/post/kak-zakryt-soed...e-skripta.html

В начале скрипта поставить код с этой страницы (первые 20 строк), заменив 7-ю строку на echo "Ok";
И убрать строку echo $res; в конце вашего скрипта.

Последний раз редактировалось Белый шум, 19.02.2023 в 20:32.
Ответить с цитированием
  #12 (permalink)  
Старый 20.02.2023, 09:16
Аспирант
Отправить личное сообщение для BorisJe Посмотреть профиль Найти все сообщения от BorisJe
 
Регистрация: 03.12.2021
Сообщений: 66

Сообщение от Белый шум Посмотреть сообщение
https://dron.by/post/kak-zakryt-soed...e-skripta.html

В начале скрипта поставить код с этой страницы (первые 20 строк), заменив 7-ю строку на echo "Ok";
И убрать строку echo $res; в конце вашего скрипта.
Спасибо за объяснение и код
Не приходят формы на почту админу, и так и так попробовал
Ответить с цитированием
  #13 (permalink)  
Старый 20.02.2023, 13:14
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

Сообщение от BorisJe
Не приходят формы на почту админу, и так и так попробовал
Вот тут пишут - https://bugs.php.net/bug.php?id=60586#1639418517 - что ignore_user_abort(true); не работает для FastCGI в связке с IIS, а возможно и с другими серверами тоже.

Значит я вижу три выхода:
- либо менять протокол взаимодействия с веб-сервером и/или сам веб-сервер;
- либо ставить локально почтовый сервер (для быстрого приёма письма), который будет затем перенаправлять почту куда надо;
- либо вариант, который предложил Nexus.
Ответить с цитированием
  #14 (permalink)  
Старый 20.02.2023, 13:46
Аспирант
Отправить личное сообщение для BorisJe Посмотреть профиль Найти все сообщения от BorisJe
 
Регистрация: 03.12.2021
Сообщений: 66

Сообщение от Белый шум Посмотреть сообщение
Вот тут пишут - https://bugs.php.net/bug.php?id=60586#1639418517 - что ignore_user_abort(true); не работает для FastCGI в связке с IIS, а возможно и с другими серверами тоже.

Значит я вижу три выхода:
- либо менять протокол взаимодействия с веб-сервером и/или сам веб-сервер;
- либо ставить локально почтовый сервер (для быстрого приёма письма), который будет затем перенаправлять почту куда надо;
- либо вариант, который предложил Nexus.

сейчас в Joomla стоит phpMail, когда настраивал smtp вообще не приходило
Ответить с цитированием
  #15 (permalink)  
Старый 20.02.2023, 14:08
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

Сообщение от BorisJe
сейчас в Joomla стоит phpMail, когда настраивал smtp вообще не приходило
Это не имеет значения. Под локальным почтовым сервером я имел ввиду postfix или exim, либо другой MTA. Его настройка в такой роли нетривиальна, так что придётся заплатить кому-нибудь знающему. Пэтому лучше выбрать что-то из оставшихся двух вариантов.

Последний раз редактировалось Белый шум, 20.02.2023 в 14:12.
Ответить с цитированием
  #16 (permalink)  
Старый 20.02.2023, 15:04
Аспирант
Отправить личное сообщение для BorisJe Посмотреть профиль Найти все сообщения от BorisJe
 
Регистрация: 03.12.2021
Сообщений: 66

А что если: сервак должен получать запрос, запускать в отдельном потоке отправку письма, и отвечать клиенту что всё ок
т.е. фронт отправить запрос и получит ответ за секунду.
А письмо отправлять сервер будет уже столько сколько надо
т.е. фронт должен дождаться ответа что запрос на сервер отправлен после чего сделать редирект

пхп работает с потоками?
Ответить с цитированием
  #17 (permalink)  
Старый 20.02.2023, 17:28
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

По потокам не подскажу, но можно ещё запустить внешний фоновый процесс через exec и его аналоги:
https://php.ru/forum/threads/zapusk-...9/#post-489196
https://stackoverflow.com/questions/...nswer-14556052
https://ru.stackoverflow.com/questio...BD%D0%B8%D1%8F

Тут ключевое слово - фоновый. Иначе основной скрипт будет ждать завершения дочернего процесса.

Как вариант, можно так запускать не напрямую консольный php-скрипт, а дёргать УРЛ через curl или wget:
exec("wget -b -o /dev/null 'https://javascript.ru/?s=subject&text=some text для примера'");
^^тут часть >/dev/null & не нужна, т.к. мы указали ключ -b для wget, благодаря чему он сам переходит в фон; а ключом -o мы сказали что и вывод с этой страницы сохранять не нужно.
Ответить с цитированием
  #18 (permalink)  
Старый 20.02.2023, 17:58
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Сообщение от BorisJe
А что если: сервак должен получать запрос, запускать в отдельном потоке отправку письма, и отвечать клиенту что всё ок
т.е. фронт отправить запрос и получит ответ за секунду.
А письмо отправлять сервер будет уже столько сколько надо
т.е. фронт должен дождаться ответа что запрос на сервер отправлен после чего сделать редирект
Вы к Джумле хотите брокер сообщений с парой консьюмеров сбоку прибить?
Мне кажется для приложения на Joomla это как-то слишком серьезно что ли)

Попробуйте просто отправить ответ пользователю, что "все хорошо" и продолжайте выполнять отправку сообщений:
https://gist.github.com/bubba-h57/32593b2b970366d24be7
https://stackoverflow.com/questions/...nnection-early

Сообщение от BorisJe
пхп работает с потоками?
Да, работает, но я не уверен, что поток останется "жив" после завершения работы его "родителя".
Ответить с цитированием
  #19 (permalink)  
Старый 20.02.2023, 18:22
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

Сообщение от Nexus
Попробуйте просто отправить ответ пользователю, что "все хорошо" и продолжайте выполнять отправку сообщений:
У него не работает ignore_user_abort(true); - скрипт завершается при отключении клиента. Багрепорт - https://bugs.php.net/bug.php?id=60586#1639418517
Ответить с цитированием
  #20 (permalink)  
Старый 23.02.2023, 19:43
Аспирант
Отправить личное сообщение для BorisJe Посмотреть профиль Найти все сообщения от BorisJe
 
Регистрация: 03.12.2021
Сообщений: 66

а что если так?
$(document).ready(function(){
			$('.quote_form').click(function(){
			  // get text field value
			  var userName = $('.myField').val();
			  var emailAddress = 'myemail@server.com';
			  // ajax request and response in function
			  var jqxhr = $.ajax({
				url: 'sendMail.php', 
				type: 'POST',
				data: jQuery('#quote_form').serialize(),
				src: window.location.href,
				success:function(responseAnyNameHere) {
				  $('.responseArea').html(responseAnyNameHere);
				},
				statusCode:{
				  404:function(){
					//$('.error').html("Page not found!");
					alert( "file not found" );
				  }
				}
			  }).done(function() {
			  alert( "success" );
			  }).fail(function() {
			  alert( "error" );
			  }).always(function() {
			  alert( "complete" );
			});
		}}));


Только где то ошибка
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фоновое выполнение скрипта AleksSergSB Общие вопросы Javascript 2 19.01.2019 13:54
Выполнение скрипта если есть html элемент Янковиц Элементы интерфейса 2 24.10.2017 21:47
Можно ли отключить выполнение скрипта в IE ? dimba jQuery 2 20.11.2014 07:17
Как приостановить выполнение скрипта до получения результата AJAX запроса? Хиросим AJAX и COMET 9 31.10.2011 10:56
как прекратить выполнение скрипта ? kefi Общие вопросы Javascript 3 31.03.2009 19:05