2017-04-01 14 views
-2

以下是功能完整的代碼。當我通過瀏覽器調用它時,它可以工作。但是,我無法讓我的Cron工作來運行它。我試圖想出任何解決方案,並且願意接受任何想法,這些腳本可以每小時24小時全天候啓動一次。郵件腳本需要每小時運行一次,但cron不能正常工作

信息:

我曾嘗試以下:

在做這些我的尚未向數據庫添加銷售或發送一封電子郵件:

  • /opt/php54/bin/php /home1/user/public_html/Sales/scripts/sales-notif_em.php - 無法打開輸入文件:/home1/user/public_html/scripts/sales-notif_em.php
  • php /home1/user/public_html/Sales/scripts/sales-notif_em.php - 空白電子郵件什麼也沒有,但這顯示:內容類型:text/html的
  • php -q /home1/lotscav1/public_html/Sales/scripts/sales_notif_em.php - 我不明白當然
  • /usr/bin/curl home1/user/public_html/scripts/sales-notif_em.php從系統中的任何電子郵件 - 捲曲:(3)畸形
  • 任何命令(如PHP或/ usr/bin中/捲曲)具有下半年http://website.c0m/Sales/scripts/sales_notif_em.php - 嘗試添加Cron時會導致JSON錯誤工作

我已經檢查了以下幾件事:

  • 文件的權限是655
  • 時間戳是不到一個小時的老客戶表

這下我的代碼:

<?php 
//find out current time and 1 hour ago 
date_default_timezone_set('America/New_York'); 
$current_time = strtotime("now"); 
$hour_ago = strtotime('-1 hour'); 

////////////////////////////////////////////////////////////////// 
/////////////////l// Connect to Sales Database /////////////////// 
////////////////////////////////////////////////////////////////// 

$mysqli_s = new mysqli("localhost", "user", "password", 
"server_sales_data"); 
if ($mysqli_s->connect_errno) { 
echo "Failed to connect to MySQL: (" . $mysqli_s->connect_errno . ") 
" . $mysqli_s->connect_error; 
} 

////////////////////////////////////////////////////////////////// 
///////////////////// Connect to EM Database //////////////////// 
////////////////////////////////////////////////////////////////// 

$mysqli_em = new mysqli("localhost", "user", "password", 
"server_dlgEM"); 
if ($mysqli_em->connect_errno) { 
echo "Failed to connect to MySQL_EM: (" . $mysqli_em->connect_errno . 
") " . $mysqli_em->connect_error; 
} 

//Grab store name 
$dlg_store = "EM"; 

$em_request = "SELECT * FROM customers WHERE date BETWEEN '$hour_ago' 
AND '$current_time'"; 
$em_result = mysqli_query($mysqli_em, $em_request) or die("Error No 
Sales EM"); 
while ($em_row = mysqli_fetch_array($em_result)) { 
$em_prod_num = $em_row["prod_num"]; 
$em_receipt = $em_row["receipt"]; 


////////////////////////////////////////////////////////////////// 
///////////////////// Grab info for EM Sales //////////////////// 
////////////////////////////////////////////////////////////////// 

$request_s = "SELECT * FROM all_products WHERE 
dlgprod_num='$em_prod_num' AND dlg_store='$dlg_store'"; 
$result_s = mysqli_query($mysqli_s, $request_s) or die("Error dlg 
prod num EM"); 
while ($row_s = mysqli_fetch_array($result_s)) { 
     $sku_s = $row_s["sku"]; 
     $dlgprod_num_s = $row_s["dlgprod_num"]; 
     $book_title_s = addslashes($row_s["book_title"]); 
     $dlgprod_price_s = $row_s["dlgprod_price"]; 
     $author_name_s = addslashes($row_s["author_name"]); 
     $author_email_s = $row_s["author_email"]; 
     $publisher_s = $row_s["publisher"]; 
     $dlg_store_s = $row_s["dlg_store"]; 

      $add_sql_s = "INSERT INTO all_author_sales SET 
      `sku`='$sku_s', 
      `dlgprod_num`='$dlgprod_num_s', 
      `dlgprod_nam`='$book_title_s', 
      `dlgprod_price`='$dlgprod_price_s', 
      `author_name`='$author_name_s', 
      `author_email`='$author_email_s', 
      `publisher`='$publisher_s', 
      `dlg_store`='$dlg_store_s', 
      `dlgcustomer_receipt`='$em_receipt' "; 

//create signature 
$sig = "The Admin Team at www.website.com"; 
//to 
$admin_email = "[email protected]"; 
$to = array($author_email_s, $admin_email); 

//setup email headers 
$headers='From: ' . $admin_email . "\r\n" . 
'Reply-To: ' . $admin_email . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$headers .= $emailbody."\n\n"; 

//email subject and body 
$subject = "Your book stats"; 
$message = " 
Hi $author_name_s,<br /> 
I just wanted to send you a message and let you know that the book or 
books below have just been purchased.<br /><br /> 

Store: $dlg_store_s<br /> 
Receipt: $em_receipt<br /> 
Sku Number: $sku_s<br /><br /> 

Book Title: $book_title_s<br /> 
Publisher: $publisher_s<br /> 
Product Number: $dlgprod_num_s<br /> 
Price: $dlgprod_price_s<br /><br /> 

Sincerely,<br /> 
$sig<br /><br /> 

To remove yourself from this notification, please send an email to 
$admin_email with Unsubscribe in the subject line. 
"; 

      if ($mysqli_s->multi_query($add_sql_s) === TRUE) { 
      mail (implode(',', $to), $subject, $message, $headers); 
      } else { 
       echo "Error: " . $add_sql_s . "<br>" . $mysqli_s- 
>error . "<br>" . $string; 
      } 


    } 



} 


?> 
+0

嘗試在步驟工作到您的完整劇本,看看那裏的錯誤所在。從一個新文件開始,簡單地記錄一些內容,然後做一個查詢並記錄下來......不斷填充這些步驟,直到它出錯爲止,並且您將確切知道是什麼導致了它。 – hdezela

+0

謝謝!故障排除101 lol。我總是嘗試過分複雜,先忘記簡單的事情。 –

+0

請花幾分鐘在這裏嘗試Markdown格式,特別是內聯代碼格式和無序列表(「項目符號」),因爲它使事情變得更容易,更容易閱讀,並減少志願者編輯工作。謝謝。 (猜測,這可能是你的降薪的來源)。 – halfer

回答

0

我敢打賭有錯拍h到您要執行的php文件。

嘗試使用終端,如果該文件被放置你可以導航到該文件夾​​,並嘗試通過命令行從那裏運行它。

另外請注意您指的是兩個不同的名稱:sales-notif_em.php & sales-notif_me.php。

+0

我正在查看文件路徑。抱歉關於這兩個不同的文件。每個數據庫有3個文件。 sales-notif_me,sales-notif_em,sales-notif_lc。這只是我正在測試的那個。 –

+0

路徑是正確的,因爲它不是它說找不到文件。我將銷售作爲使用銷售路徑的子域。在將文件夾名稱更改爲小寫字母后,我做了重做子域以簡化操作。我正在做一些改變來解決問題,所以我會保持你的發佈。 –

0

(發佈代表OP)的

謝謝你的幫助。爲了測試目的,我使用我的電子郵件作爲作者定製了一個產品。在客戶表中,我插入了產品111111和111110.但是,在所有產品中,我給出了產品11111111和11111110.THE結果是我犯了一個錯誤。

我希望大家都能夠從這個事件學到一些東西。知識比我的自我更重要。謝謝!

相關問題