Отправка email-уведомлений с записью в cache-файл. PHP

223
03 ноября 2017, 11:43

Есть функция отправки email-уведомлений на почту администратора. Функция рабочая (уведомление приходит), но она срабатывает каждый раз когда обновляешь страницу.

Есть ли способы хранить информацию об отправленном сообщении к кэш-файле и каждый раз при перезагрузке браузера не отправлялось?

            $date_to_check = new DateTime($arElementItem['PROP']['PRIK']['VALUE']);
            $now = new DateTime(); // время сейчас   
                if ( $now->getTimestamp() == $date_to_check->getTimestamp()) {
            $to = $arElementItem['PROP']['EMAIL']['VALUE']; 
            $subject = 'Дата принятия комерческой части';
            $message = 'Дата принятия комерческой части просрочена';
               mail($to, $subject, $message); 
            }
Answer 1

Функция есть такая конечно

$cache = Bitrix\Main\Data\Cache::createInstance(); 
if ($cache->initCache($cacheTime, $cacheId, $cacheDir)) { 
    $result = $cache->getVars(); 
} elseif ($cache->startDataCache()) { 
    // Здесь выполняем нужные действия
    $cache->endDataCache($result); 
} 

Только в данном случае потребность в ней говорит об ошибках в архитектуре вашего проекта.

  1. Раз она срабатывает каждый раз значит вы этот код не туда вставляете или не обрабатываете эту возможность (обновление страницы) при приеме какой то формы. Если принимаете формы, делайте в конце редирект. А может вообще будет правильнее обработать соответствующие событие АПИ
  2. грамотнее было бы использовать не mail а СEvent::SendImmediate или СEvent::Send и сделать специальное событие и шаблон.
READ ALSO
Робокасса, result.php, отправка e-mail

Робокасса, result.php, отправка e-mail

Для моего сайта я настроил все, кроме resultphp, на который отправляется запрос после успешной оплаты

249
Получить доступ к константам Joomla

Получить доступ к константам Joomla

Есть скрипт в папке с Joomla, точнее /var/www/html/joomla/images/filephp

231
Advanced Custom Field не получается вывести кастом филд Post Object

Advanced Custom Field не получается вывести кастом филд Post Object

В темплейте главной страницы хочу вывести несколько постов, которые я проставляю в кастом филдах Вот сами кастом филды:

203