Я наконец смог использовать cron ... но я не уверен, будет ли он работать с моим кодом. Как я могу изменить это? - PullRequest
0 голосов
/ 31 декабря 2011

Мой веб-хостинг поддерживает cronjobs.Я очень новичок, поэтому я почти не знаю, что я делаю.Я запланировал cron запустить скрипт, который отправляет электронное письмо.Но я не знаю, что делать!Вот мой cron: 0 0 28 * * php -f /home/a7269592/contact.php Теперь, как я могу настроить свой код, чтобы, когда он будет 28-го, этот код отправил письмо по электронной почте.Вот PHP:

<?php    
if(isset($_POST['email']))
{

 $headers = "From: Memory Jet <your_company@example.com>\r\n";


$to_visitor = $_POST["email"];
$common_data = $_POST["message"];
mail($to_visitor, "Your Memory", $common_data, $headers);

} ?>

Вот HTML-форма:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<html> <body><form method="post" action="contact.php">
 Email: <input name="email" type="text"><br> name:<br> 
<textarea name="name" rows="15" cols="40"></textarea><br> 
Message:<br> <textarea name="message" rows="15" cols="40"></textarea><br>
 <input type="submit"> </form> <body> <html>
</body>

Так как мне изменить php, чтобы cron планировал это ??Заранее спасибо!-Бен

Ответы [ 2 ]

5 голосов
/ 31 декабря 2011

Не так далеко, я был в точно такой же ситуации. На мой взгляд, вы пытаетесь разграничить рассылку от «в момент публикации» до запланированного графика. Итак, первое, что вам нужно знать, это:

Когда вы запускаете CRON, у вас нет доступа к $ _SERVER, $ _POST и другим глобальным переменным

Это потому, что вы запускаете PHP, а НЕ через сервер, который является АВТОРОМ глобальных переменных.

Таким образом, вам необходимо создать временное хранилище для вашей почты, например, файл почтовых задач (может возникнуть проблема с добавлением задач во время выполнения, например, если ваш cron mailer отправляет письма, и в то же время ваш интерфейс PHP Сценарий хочет добавить некоторые задачи, чтобы файл задач мог быть поврежден), или БД, или все, что может сделать ваше воображение.

После этого вам нужно настроить задачу cron, которая будет принимать, например, первые 500 почтовых заданий и отправлять их по почте. Конечно, вы можете отправить все почтовые задания в данный момент, не проблема.

Надеюсь, это поможет.

2 голосов
/ 31 декабря 2011

Я вижу, что вы пытаетесь сделать, но планируете ли вы только отправить электронное письмо, если оно 28-го числа, или сохранить его и отправить 28-го? Если вы используете первый вариант, вы должны изменить его так, чтобы он сказал это.

<?php   
$today = getdate()
if(isset($_POST['email']) && $today['mday'] == 28)
{

$headers = "From: Memory Jet <your_company@example.com>\r\n";


$to_visitor = $_POST["email"];
$common_data = $_POST["message"];
mail($to_visitor, "Your Memory", $common_data, $headers);

} ?>

Что касается хранения, комментарии верны, вы должны пересмотреть свой код. Crontab будет запускать код без получения данных от веб-формы, а запросы CLI обрабатываются по-разному. Я бы определенно добавил еще один файл для обработки запроса формы и направил его в форму или базу данных. Запущенный crontab будет читать из этого файла или базы данных.

...