CronJob友好的PHP重定向

时间:2015-08-18 11:35:04

标签: php redirect cron

我正在努力使用由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']).'.');

}

?>

1 个答案:

答案 0 :(得分: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,那么可能就够了,至少在你测试基础知识的时候。