我有一個主要是Ajax驅動的網站,其內容通過向「運營商」PHP腳本發出請求來填充。如何將請求轉換爲另一個PHP腳本?
雖然通常這些請求都來自Javascript,但有些情況下從另一個PHP腳本中查詢我的運算符很有用。
我一直在使用的方法是通過一個帶有查詢字符串的URL通過file_get_contents()
- 然後解析返回的JSON與json_decode()
。
由於多種原因,我想避免這種實現,雖然...我在我的錯誤日誌中看到,無論出於何種原因,URL請求都更容易失敗 - 而且我讀過它並不是非常有效。
我的第一次嘗試以進行通用query_operator($query_string)
型功能簡單require()
輸出緩衝區內-ed operator.php
,與ob_get_contents()
抓獲。我還使用從$query_string
解析的參數臨時重置$ _REQUEST數組。
這種方法有太多缺點 - 特別是變量作用域和MySQL連接的問題。
我的第二次嘗試涉及使用反引號操作符(相當於shell_exec()
),並將參數映射到$_REQUEST
數組。
這種方法實際上工作得很好,但在我使用的主機上,PHP(cli)版本設置爲4.4.8 - 而且我需要5.2.x.假設我無法切換(cli)版本,那麼使用查詢字符串對另一個PHP腳本進行沙箱請求的下一個最佳方法是什麼?任何建議不勝感激。
這是我第2次嘗試是什麼樣子:
function query_operator($query) {
$query = '--'.str_ireplace('&', ' --', $query);
$contents = `php operator.php $query`;
if ($json = json_decode($contents, true)) {
return $json;
} else {
return $contents;
}
}
是的,我正在尋找一個快捷方式,但保理是絕對要走的路。我創建了一個'Operator'類,它從請求方法中抽象出它的函數。 – JKS 2010-08-13 00:53:25