2012-06-12 3 views
1

Я хотел сделать это, потому что мой сайт делает около 3 HTTP-запросов на загрузку страницы, потому что каждый вывод PHP извлекается с помощью cURL. Это слишком медленно, и я хочу избежать использования cURL. Я нашел this question на переполнении стека, и он в основном делает то, что я хочу. Рекомендация принятого ответа заключается в использовании ob_start();, чтобы начать получать выходные данные, а затем использовать ob_get_clean();, чтобы вывести результат в переменную. Моя проблема теперь в том, что скрипты PHP, которые я пытаюсь захватить вывод из переменных необходимости, переданных им с помощью HTTP Get. Доступ эти переменные, как это:Как захватить вывод PHP в переменную

$term = $_GET['term']; 

И я не хочу, чтобы изменить это, потому что, хотя я собираюсь открыть выходы этих скриптов из другой PHP скрипта, я также планирую на доступ к ним из других мест. Итак, есть ли способ обмануть эти PHP-скрипты в принятии некоторых аргументов через Get, а затем захватить их выходы с помощью метода, предложенного выше?

ответ

1

И я не хочу, чтобы изменить это, потому что, хотя я собираюсь получить к ним доступ Выводы PHP-скриптов из другого скрипта PHP, я также планирую получить доступ к ним из других источников. Итак, есть ли способ обмануть эти PHP-скрипты в принятии некоторых аргументов через Get, а затем захватить их выходы с помощью метода, предложенного выше?

Ваш вопрос немного непонятно, почему вы используете CURL в первую очередь. Если ваши сценарии находятся на том же сервере, вы можете просто установить правильные $_GET переменные и использование:

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

$output = ob_get_clean(); 

Если ваши сценарии находятся на другом сервере, где включают не жизнеспособен, вы всегда должны сделать HTTP-запрос, чтобы получить их содержимое, независимо от того, является ли это с помощью cURL или Ajax, или сокетов для всего, что мне нужно.

+0

Это именно то, что мне нужно, спасибо. – Hassan

+0

Больше всего приветствуются. :) –

0

ну, вы можете получить доступ к $ _GET из любого загруженного скрипта, пока его в URI, переменная $ term может использоваться в любом скрипте. Вы также можете включить скрипт.

Когда вы включаете скрипт, вы можете получить доступ к его содержимому после включения.

+0

Получить аргументы передаются в определенный файл PHP. Попытка получить к ним доступ из другого файла - это не то, что я пытаюсь сделать. – Hassan

+0

из формы представления? – Eli

+0

Нет, из другого файла PHP. – Hassan

2

Вы можете переменные $ _GET из любого скрипта php, если его установить (используйте для этого проверку isset). Тогда только cURL на такой URL будет работать.

Если вы недавно поменяли метод на POST, вы можете использовать CURLOPT_HTTPGET. Дополнительную информацию см. На странице функций curl_setopt (http://www.php.net/manual/en/function.curl-setopt.php).

Для метода non-cURL используйте jQuery ajax. Он прост в использовании, просто прочитайте документацию here.

EDIT: Это то, что вы хотели (не проверял код, хотя)

<?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')); 

?> 
+0

На самом деле я стараюсь избегать использования cURL, потому что он медленный. Это вопрос моего вопроса. – Hassan

+0

@ Hassan Вы на самом деле сказали, что используете первую строку своего вопроса cURL. В любом случае, тогда вы можете использовать 'jQuery ajax' для этого.Просто передайте значения, которые вы хотите отправить как 'get' в параметре' data' $ .ajax, и ваш результат будет получен в функции успеха. – gopi1410

+0

Да, я использую cURL, но это именно моя проблема. – Hassan

Смежные вопросы