我想避免在我的網站上做任何不必要的HTTP請求來提高性能。所以,我想使用cURL在我的服務器上包含本地PHP,而不使用。問題是,我打電話的PHP期望通過HTTP GET傳遞一些參數。我想保持這種方式,因爲我也希望能夠從其他地方訪問這些PHP文件。包含本地PHP文件和傳遞參數
這樣做的最好方法是什麼?我可以訪問本地PHP文件的輸出,同時給它GET參數嗎?
我想避免在我的網站上做任何不必要的HTTP請求來提高性能。所以,我想使用cURL在我的服務器上包含本地PHP,而不使用。問題是,我打電話的PHP期望通過HTTP GET傳遞一些參數。我想保持這種方式,因爲我也希望能夠從其他地方訪問這些PHP文件。包含本地PHP文件和傳遞參數
這樣做的最好方法是什麼?我可以訪問本地PHP文件的輸出,同時給它GET參數嗎?
我想避免這樣做我的網站上的任何不必要的HTTP請求來提高性能
include
也使得HTTP請求時您提供的HTTP URI吧,所以不是客戶端的異步包含(例如,使用AJAX或iframe),您可以在服務器上同步執行該操作,從而使頁面加載速度更慢。
所以,雖然包括可能按預期工作(你想包括輸出,對吧?),它絕對不會加快你的網站。
我打電話的PHP期望通過HTTP GET傳遞一些參數。我想保持這種方式,因爲我也希望能夠從其他地方訪問這些PHP文件。
然後在包含它們之前改變這些文件並設置適當的變量。甚至更好,重構它的功能。例如,如果你想要的文件,包括如下所示:
$username = $_GET['username'];
print "User: $username";
然後重構爲一個單獨的文件中的函數和存儲:
function PrintUsername($username)
{
print "User: $username";
}
,並適當地調用它:
include('printusername.php');
PrintUsername($_GET['username']);
(你可能想在這裏和那裏扔一個isset()
。)現在你可以改變你的代碼,也需要這個輸出:
include('printusername.php');
PrintUsername($someOtherVariable);
現在,您不必依賴URL或$_GET
或include
魔法,只需使用所有功能。
是否有另一種包含輸出的方式。目前我已經在使用cURL,它非常慢(每個請求訪問3個PHP)。 – Hassan
@Hassan是的,通過使用來自客戶端的AJAX請求。 – CodeCaster
任何從服務器獲取它們的方法?畢竟他們坐在一起! – Hassan
假設你在Linux中,你可以執行的是劇本,拿起輸出的東西,如:
exec ("php myPhpFile.php arg1 arg2 arg3 > myPhpOutput.html");
然後打開輸出文件進行讀取。但是爲了使這個工作起來(而且很醜!),你需要修改myPhpFile並實現一個測試$ _GET參數的方法。如果它沒有找到它們,然後使用argv
改進加載屬性(我在想懶洋洋:))
了shell_exec將返回輸出爲字符串。所以
$filecontents = shell_exec("php yourfile.php arg1 arg2 arg3...");
將返回一個PHP文件的處理輸出。
exec的第二個參數也可以給出用輸出行填充數組。所以這取決於你想如何返回你的輸出。 [shell_exec](http://uk.php.net/manual/en/function.shell-exec.php) [exec](http://uk.php.net/manual/en/function.exec。php) –
這裏可能是最有趣的答案。謝謝,我也會考慮這個! – Hassan
你是velkom! Spotted [this](http://stackoverflow.com/questions/4186392/php-passing-get-in-linux-command-prompt)。最常見的答案是使用[getOpt()](http://php.net/manual/en/function.getopt.php)捕獲參數的方法很好, –
看看你是否從php.ini啓用了'allow_url_fopen'。 – Sarfraz
@Sarfraz即使他這麼做,該命令也不會包含腳本,它會包含腳本的輸出。另外,你也需要允許'allow_url_include'以使其工作。另外,你應該永遠不要通過HTTP包含東西。永遠。 – DaveRandom
@DaveRandom:這是正確的,我只是把重點放在他的錯誤:) – Sarfraz