2013-04-21 60 views
1

我有这个PHP代码来检查是否通过日期,所以我可以显示或不或做某事。自动事件与Php

我想修改它并制作一个像FB一样的自动发布系统!所以下面是我的php代码,我已经找到并正在工作。

$regdate = "20/10/2009"; // recording date 
$d = explode("/",$regdate); //date in array 
$day = $d[0]+10; // Plus ten days 
$end_timestamp = mktime("0","0","0",$d[1],$day,$d[2]); //Expiration date Timestamp 
$thismoment = time(); // Current Timestamp 
if ($end_timestamp > $thismoment) // Compare 
{ 
echo "Hello Word"; 
} 

我该如何在特定的日期和时间修改它以便我的脚本发送电子邮件?

例如,我想在22/04/2013在14:30我的脚本我想做点什么? (如Facebook的Aumated后)

问候

+1

使用cron作业进行自动事件 – 2013-04-21 14:41:30

+0

不可能使用纯php。你需要一个cronjob或者一个cgi脚本。也许是一个node.js服务器和服务器发送事件。 – mercsen 2013-04-21 14:46:57

+0

你*可以*但不应该循环你的脚本。例如该脚本每10秒左右使用CURL或fsocket自行调用。但这不是推荐 – mercsen 2013-04-21 14:48:29

回答

2

你有两个选择(至少):

  • 使用cron任务由系统提供的(的Linux/Unix)
  • 在控制台中运行你的PHP脚本作为守护进程,请参阅下面的示例代码。
<?php 
define("MY_DEFINED_TIME", strtotime("22/04/2013 14:30")); 
while (true) { 
    if (time()==MY_DEFINED_TIME) { 
     //send your email 
     echo "Hello world"; 
     break; 
    } 
    sleep (1); // have a rest 
} 

你可以用这个命令来运行你的守护进程:

nohup的PHP your_script.php 2> & 1 >> /tmp/your_script.log &

然后,当出现任何错误时,您可以在/tmp/your_script.log中找到输出。 希望这有帮助。

+0

什么是MAX_EXECUTION_TIME? – mercsen 2013-04-21 15:15:13

+0

从控制台运行PHP时,最大执行时间设置为无限制。见http://www.php.net/manual/en/features.commandline.differences.php – Alix 2013-04-21 15:17:00

+0

好吧,我不知道它,这就是为什么我问;)但我认为这不是什么PHP的设计。我更喜欢红宝石,甚至perl – mercsen 2013-04-21 15:39:47