После того, как Harvey Hardware Network на прошлой неделе перешла на новую платформу для выпуска новостей, из-за временных потребностей исходная новостная платформа не была полностью остановлена. Поэтому после начала использования новой платформы возникла головная боль. Домашняя страница веб-сайта. всегда обновляется до исходного системного содержимого, что в конечном итоге приводит к невозможности нормального доступа к определенной ссылке на новости. Новая система оптимизировала URL-адрес, и URL-адрес страницы новостей отличается от исходной системы. Сначала я подумал, что это потому, что кто-то все еще использовал старую систему, но ситуация все еще повторялась на следующий день, поэтому я подумал, что это может быть проблема со старой системой. Позже я проверил и обнаружил, что система Empire CMS имела место. задача по умолчанию — обновление домашней страницы, поэтому я отменил ее. После этого домашняя страница веб-сайта будет обновляться нормально.
После решения этой задачи меня заинтересовали задачи PHP, о которых я уже знал, но толком не практиковался. Возможно, учитывая важность этой функции для разработки системы веб-сайтов, я решил изучить ее сейчас и написать набор. Зрелый код для будущего применения.
Первый — поиск соответствующей информации в Интернете. Прочитав эту информацию, я знаю, что задачи PHP можно условно разделить на три категории.
Запланированные задачи сервера
Сервер WIN может напрямую использовать запланированные задачи для выполнения связанных приложений, а сервер Linux можно реализовать, добавив запланированные задачи в /etc/crontab.
Автоматическое выполнение задачи через бесконечный цикл
Создайте страницу файла программы и используйте ignore_user_abort, чтобы сделать ее исполняемой после закрытия страницы браузера. Тогда после запуска страницы программы необходимый вам план задач всегда будет выполняться автоматически. Обычным PHP-программистам, если они недостаточно уверены в себе, эта операция не разрешена, поскольку бесконечный цикл может легко привести к сбою сервера.
Запускаемые запланированные задачи
Среди нескольких известных мне программ, таких как Discuz, Empire CMS и т. д., все они используют этот метод для выполнения запланированных задач системы. По сравнению с двумя предыдущими методами это самый безопасный и простой.
Вариантов очень много, поэтому при разработке программы вам следует выбрать наиболее подходящий способ программирования, основанный на реальных потребностях. Давайте дадим введение на примерах.
Электронный журнал AiLiterature.com был выпущен вскоре после запуска веб-сайта. Это электронный журнал, доставляемый по электронной почте. Отправка последнего выпуска электронного журнала в почтовые ящики подписчиков — огромная задача, просто пакетная обработка. страницы. Отправка явно не работает. Основная причина заключается в том, что в настоящее время нет собственного почтового сервера, такого как почтовые ящики, предоставляемые News, Tencent и 163. Хотя они поддерживают SMTP для отправки электронных писем, они не позволяют отправлять большие пакеты электронных писем. Условия ограничены. так что это можно решить только через программы Этот вопрос.
Прежде всего, я выбрал запускаемую запланированную задачу. Чтобы программа, отправляющая электронные письма, не влияла на удобство посещения пользователем веб-сайта, в основном на скорость открытия страницы веб-сайта, я решил использовать Ajax для реализации триггера. Добавьте функцию триггера в общедоступный файл JS, и пользователи смогут запускать задачу отправки электронной почты при посещении любой страницы.
Чтобы ограничить частоту отправки электронных писем и предотвратить их блокировку почтовым сервером из-за чрезмерно частой отправки электронных писем, в программе также установлены ограничения по времени, чтобы случайным образом генерировать время ожидания для решения проблемы. отправка электронных писем не является фиксированным интервалом. На самом деле интервал в режиме триггера Время по своей сути является неопределенным, но когда на веб-сайте большое количество посещений, такие проблемы все равно могут возникнуть, поэтому безопаснее добавить настройки в этом режиме. внимание.
Несмотря на вышеперечисленные меры, в реальных приложениях всё равно встречается запрет почтовому серверу на отправку писем, но это не запрещено навсегда. Способ решения этой проблемы — создать массив для сохранения параметров SMTP разных почтовых служб. Когда один почтовый сервер не может нормально отправлять почту, он автоматически перейдет на другой почтовый сервер.
В списке собранных адресов электронной почты будут некоторые недействительные адреса. Если в процессе отправки электронных писем один раз отправка не удалась, переключитесь на другой почтовый сервер и отправьте снова. Если ни один из них не окажется успешным, установите для этого адреса электронной почты значение «Если он недействителен». , в будущем на этот адрес больше не будут отправляться электронные письма, что повышает эффективность списка адресов электронной почты и экономит время для отправки электронных писем в следующий раз.
Некоторые друзья говорят, что я слишком скуп и делюсь слишком мало кода в блогах такого типа. На самом деле, когда мы ищем информацию в Интернете, мы обнаруживаем, что коды, используемые многими веб-сайтами, не обязательно практичны, а иногда и так. задерживается из-за обращения к этим кодам. Много времени, поэтому при подведении итогов я часто суммирую методы решения проблемы и записываю ключевые технические параметры, чтобы иметь справочную информацию при возникновении подобных проблем в будущем. Если у вас есть какие-либо вопросы по этому поводу, вы можете связаться со мной через сообщение или электронную почту.
Личное пространство автора Happy Boy