如何用PHP编写Cron?

时间:2011-09-14 15:19:48

标签: php cron

<?php

class Baddriver{
// Constructor - open DB connection
function __construct() {
    $this->db = new mysqli("localhost", "root", "password", "dbname");
    $this->db->autocommit(FALSE);
}
 // Destructor - close DB connection
function __destruct() {
    $this->db->close();
}

// Main method to redeem a code
function bad() {
    if(isset($_POST["plakano"]) || isset($_POST["secim"]) || isset($_POST["sehir"])){
    $sehir=$_POST["sehir"];
    $plakano=$_POST["plakano"];  
    $aciklama=$_POST["aciklama"];
    $secim=$_POST["secim"];
    $plaka = str_replace(",","",$plakano); 

    $stmt = $this->db->prepare("INSERT INTO veri (plakano,aciklama,tarih,sehir,secim) VALUES (?, ?, CURDATE(),?,?)");
        $stmt->bind_param("ssss", $plakano,$aciklama,$sehir,$secim);
        $stmt->execute();
        $stmt->close();
        $this->db->commit();
    }
}

}

$api = new Baddriver;
$api->bad();
?>

这是我的php文件,我搜索了2天,现在我理解2件事情首先是我需要放

#!/usr/bin/php -q 

在顶部(老实说不知道为什么)我需要连接到我的网络服务器打开shell并编写cron代码,如

PATH=/usr/local/sbin:/usr/local/bin:/home/user1/bin
MAILTO=user1@nowhere.org,user2@somewhere.org
0 2 1-10 * * du -h --max-depth=1 /

是不是cron会工作还是我缺少的东西?谢谢你的时间和时间。

2 个答案:

答案 0 :(得分:2)

#!/usr/bin/php -q告诉你的服务器这个脚本应该用php运行。

您添加到crontab的cron代码将按指定的时间间隔运行您的脚本。

但这不是全部。您的脚本使用$ _POST,但如果您将其作为cron作业运行,则无法发布到PHP脚本。所以这些价值将无法使用。

答案 1 :(得分:2)

Cron是一种按计划运行命令行工具的工具。因此,只需要以不需要Web服务器的任何功能的方式编写php脚本。即:setheaders,$ _GET,$ _POST,$ _COOKIE

#!/usr/bin/php -q如果您使脚本可执行并直接从命令行运行它,则会提示如何运行它。在这种情况下,使用带有选项“-q”'

的/ usr / bin中的php

-q告诉脚本运行'quiet',并避免打印一些http标头。

另外,有关crontab条目格式的更多详细信息,请参阅man 5 crontab

您可以跳过设置脚本可执行文件和#!如果您在crontab条目的末尾使用/usr/bin/php -q badDriver.php,则行。

53 23 * * 7 www-data /usr/bin/php -q /path/to/script/badDriver.php

每周日服务器时间晚上11:53运行脚本,作为用户'www-data'。