簡體   English   中英

Cron Job PHP Foreach僅發送一封電子郵件/運行一行

[英]Cron Job PHP Foreach Only Sends Out ONE Email/Runs ONE Row

我正在嘗試運行執行以下PHP代碼的cron作業:

<?php
require 'core/init.php';
$freq = "1day";
$camp = $users->get_campaigns($freq);
foreach($camp as $val) {
    $data['customer'] = $val['thename']; 
    $data['companyname'] = $val['company']; 
    $data['email'] = $val['reply_to']; 
    if($val['defaultc'] == "1") {
        $phrase = $val['1'];
    }
    elseif($val['defaultc'] == "2") {
        $phrase = $val['2'];
    }
    elseif($val['defaultc'] == "3") {
        $phrase = $val['3'];
    }
    $placeholders = array("{customer}", "{companyname}", "{email}");
    $new_member_file = str_replace($placeholders, $data, $phrase);

    $headers = "From: ".$val['reply_to']."\r\n";
    $headers .= "Reply-To: ".$val['reply_to']."\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

    $message = "<html><head><style type='text/css'>body { font-family: Arial, sans-serif; }</style></head><body>";
    $message .= "".$new_member_file."</body></html>";

    mail($val['theemail'], $val['sub1'], $message, $headers,'-f'.$val['reply_to'].'');
    $users->email_sent($user_id);   
}
?>

如果我直接通過瀏覽器訪問該文件,它可以完美運行。 但是,如果通過cron作業運行它,它將僅執行foreach代碼ONCE ...,這意味着它僅應拉出多行並發送多封電子郵件時,才將第一行從MySQL數據庫中拉出並發送一封電子郵件。

我不知道為什么會這樣-我試圖尋找一個沒有運氣的原因。

有人有什么想法嗎?

腳本中的get_campaigns()函數使用的是$ _POST超全局變量-無法通過cron作業執行此操作。 刪除了$ _POST超全局變量,並且cron腳本完美執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM