我终于能够使用cron ...但我不确定它是否适用于我的代码。我怎么能改变它?

时间:2011-12-31 16:03:12

标签: php html email cron

我的虚拟主机支持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安排它?提前致谢! -ben

2 个答案:

答案 0 :(得分:5)

不是到目前为止,我处于完全相同的情况。在我看来,你正试图将邮件从“发布时刻”完全转移到预定的时间表。所以,首先你需要知道的是:

当您运行CRON时,您无法访问$ _SERVER,$ _POST和其他全局变量

那是因为你运行PHP,而不是通过服务器,这是全局变量的AUTHOR。

因此,您需要为邮件创建临时存储,例如邮件任务文件(可能是执行时附加任务的问题,例如,如果您的邮件发送邮件发送邮件,同时您的前端PHP脚本想要添加一些任务,以便任务文件可能被损坏)或数据库,或者你的想象力可以做什么。

之后,您需要设置您的cron任务,例如前500个邮件任务并邮寄它。当然,您可以在此刻邮寄所有邮件任务,而不是问题。

希望,这有帮助。

答案 1 :(得分:2)

我看到你要做的是什么,但你是否计划只在第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将运行代码而不从表单中获取gettimg数据 - 基于Web,并且不同地处理CLI请求。我会定义添加另一个文件来处理表单请求并将其放到表单或数据库。由crontab运行的那个将从该文件或数据库中读取。