以下は完全に機能するコードです。私はブラウザを介してそれを呼び出すときに動作します。しかし、私はそれを実行する私のCronの仕事を得ることができません。私はどんな解決策を試してみても、このスクリプトが24時間365日に1度、1時間に1回発射されるようなアイデアを公開しています。メールスクリプトは1時間ごとに実行する必要がありますが、動作していないcronはありません
情報:
- Hostgatorの
- PHP 5.4
- Hostgatorのcronのためのリンクは、コマンド:http://support.hostgator.com/articles/cpanel/what-do-i-put-for-the-cron-job-command?utm_source=cPanel&utm_medium=message&utm_campaign=Cron%20Jobs
私は次のことを試してみました:
これらのいずれかを行うとき、私はまだデータベースに販売を追加したり、単一のメールを送信したりしてはいけません。
/opt/php54/bin/php /home1/user/public_html/Sales/scripts/sales-notif_em.php
- 開くことができませんでした入力ファイル:/home1/user/public_html/scripts/sales-notif_em.phpphp /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)- 任意のコマンドhttp://website.c0m/Sales/scripts/sales_notif_em.phpと後半を持っている(PHPのようなまたは/ usr/binに/カール)不正な形式 - 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;
}
}
}
?>
完全なスクリプトをステップごとに試して、エラーの原因を確認してください。新鮮なファイルから始めて、単に何かを記録してから、クエリを実行してログを記録してください...エラーが出るまで手順をいっぱいにしておけば、原因を正確に知ることができます。 – hdezela
ありがとうございます!トラブルシューティング101 lol。私はいつも単純なものを過度に複雑にして忘れようとします。 –
Markdownの書式設定、特にインラインコードの書式設定と順序付けられていないリスト(「箇条書き点」)を試してみてください。読みやすく、読みやすく、ボランティア編集作業が少なくて済みます。ありがとう。 (推測すると、これはあなたのダウンフォースのソースかもしれません)。 – halfer