1

各 PHP の出力は cURL で取得されるため、私のサイトはページの読み込みごとに約 3 つの HTTP 要求を実行するため、これを実行したいと考えていました。これは遅すぎるため、cURL の使用は避けたいと考えています。Stack Overflow でこの質問を見つけましたが、基本的にはやりたいことができます。受け入れられた答えの提案は、出力のob_start();取得を開始するために使用ob_get_clean();し、出力を変数に入れるために使用することです。私の問題は、出力をキャプチャしようとしている PHP スクリプトが、HTTP Get を使用して変数に渡される必要があることです。これらの変数には次のようにアクセスします。

$term = $_GET['term'];

これらの PHP スクリプトの出力には別の PHP スクリプトからアクセスする予定ですが、他の場所からもアクセスする予定があるため、これを変更したくありません。では、これらの PHP スクリプトをだまして Get を介していくつかの引数を受け取り、上記の方法で出力をキャプチャする方法はありますか?

4

3 に答える 3

2

設定されている場合は、任意のphpスクリプトから$ _GET変数を取得できます(issetを使用してチェックします)。次に、そのようなURLへのcURLだけが機能します。

以前にメソッドをPOSTに変更した場合は、を使用できますCURLOPT_HTTPGET。詳細については、curl_setopt関数のページ(http://www.php.net/manual/en/function.curl-setopt.php)を参照してください。

非cURLメソッドの場合は、を使用しますjQuery ajax使い方はとても簡単です。こちらのドキュメントを読んでください。

編集:これはあなたが望んでいたものです(しかしコードをチェックしていません)

<?php

function get_include_contents($filename, $get) {
 if (is_file($filename)) {
    ob_start();
    $_GET = array();
    while (list($key, $val) = each($get)) {
      $_GET[$key]=$val;
    }
    include $filename;
    return ob_get_clean();
 }
 return false;
}

$string = get_include_contents('somefile.php', array('param1'=>'x', 'param2'=>'y'));

?>
于 2012-06-12T08:28:28.783 に答える
1

これらの PHP スクリプトの出力には別の PHP スクリプトからアクセスする予定ですが、他の場所からもアクセスする予定があるため、これを変更したくありません。では、これらの PHP スクリプトをだまして Get を介していくつかの引数を受け取り、上記の方法で出力をキャプチャする方法はありますか?

そもそも cURL を使用している理由について、あなたの質問は少し不明確です。スクリプトが同じサーバー上にある場合は、正しい$_GET変数を設定して次を使用するだけです。

<?php
ob_start( );
// include the file.
$_GET['foo'] = 'bar';
include 'the_file.php';

$output = ob_get_clean( );

スクリプトが include が実行できない別のサーバーにある場合、これが cURL または Ajax を使用しているか、または私が気にかけているすべてのソケットを使用しているかに関係なく、コンテンツを取得するために常にHTTP 要求を実行する必要があります。

于 2012-06-12T08:46:16.887 に答える
0

$_GET が URI にある限り、ロードされた任意のスクリプトからアクセスできます。変数 $term は任意のスクリプトで使用できます。スクリプトを含めることもできます。

スクリプトをインクルードすると、インクルード後にそのコンテンツの一部にアクセスできます。

于 2012-06-12T08:24:50.987 に答える