2015-08-18 95 views
1

我正在努力與Cronjob激活幷包括重定向的PHP腳本。CronJob友好的PHP重定向

該腳本在我的數據庫中查找記錄,根據需要發送一封電子郵件,然後重定向到編譯的URL,以便將記錄的詳細信息導入到外部系統中。

電子郵件部分通過Cronjob工作正常,重定向沒有,我知道這是因爲Cronjobs不在瀏覽器中操作,但我不確定什麼是重定向到URL的最佳替代方法。

簡體下面的代碼:

<?php 

// Connect to DB 
require_once($_SERVER['DOCUMENT_ROOT']."/admin/inc/dbconnect.php"); 

// Check DB for quotes that have not been sent to this client 
$query_quotes = "SELECT * FROM quotes WHERE sent_client = 0 LIMIT 1"; 
$view_request = mysqli_query($GLOBALS['db_connect'], $query_quotes); 

// Send to external system and email customer with quote 
while ($quotes = mysqli_fetch_array($view_request)){ 

    $Body = "Email Content"; 

    // Send email via Swift Mailer 

    // Send quote information to third party system via URL redirect 
    header('Location: http://exampleurl/?FirstName='.rawurlencode($quotes['name']).'&businessName='.rawurlencode($quotes['company_name']).'.'); 

} 

?> 
+0

你可能會更好運氣cURL http://php.net/manual/en/book.curl.php。 – harris

+0

任何人都可以幫助我如何在這種情況下使用cURL嗎?我可以在服務器上創建一個簡單的cURL腳本,但試圖複製一個重定向似乎會導致超時錯誤,我推測是因爲它期望的響應不會到來? –

+0

我不完全遵循重定向的意思嗎?從你的例子來看,一個簡單的HTTP請求就足夠了。 – harris

回答

0

它是如你所說,你是不是在網絡的環境中,所以沒有瀏覽器作用於Location:重定向。這並不意味着你不能將信息傳遞給網頁 - 你只是不能重定向到它 - 你打電話給它,並獲取信息 - 你回來的信息可能不會太多 - 只是'好,我得到了它可能綽綽有餘。這可能是這麼簡單

$url = "http://exampleurl/?FirstName=" . 
    rawurlencode($quotes['name']) . '&businessName=' . 
    rawurlencode($quotes['company_name']) 
$response = file_get_contents($url); 

,響應可能是那樣簡單200 OK(不過,如果有距只是沒有響應「OK」,正式根據HTTP規範,你會回到204 No Content,但這是一件非常小的事情)。

更好的辦法是使用一個合適的HTTP調用函數,它可以處理重定向等潛在問題,讓生活變得更容易 - 例如像Guzzle庫,但是,如果file_get_contents使用URL工作,這可能就足夠了,至少在你測試基礎的時候。