Вызов функции из другого скрипта PHP через HTTP: это медленнее или что-то еще?

Допустим, у меня есть файл PHP some_function.php с которым я могу бегать file_get_contents('some_function.php?' . $parameters_string) (или любая аналогичная функция). Параметры этой функции могут быть заданы с помощью метода GET или POST HTTP.

Вместо этого я мог include нужен файл и использовать эту функцию в одном скрипте.

Я мог бы понять, что было бы разумно, если мне нужно запустить отдельный процесс или мне нужно, чтобы эта функция была на отдельном сервере. Но если нет, есть ли причины не делать этого? Может быть, этот звонок будет намного медленнее? Что-нибудь еще, что я должен принять во внимание?

Я знаю, что не смогу использовать глобальные переменные (которые я все равно считаю плохим стилем кодирования).

0

Решение

Используя file_get_contents() вы на самом деле не будете вызывать соответствующую функцию, но сделаете HTTP запросить передачу некоторых предопределенных параметров, которые затем будут переданы функции в вашем коде.

С помощью include() вы могли бы иметь библиотеку classes или же functions внутри этого файла и вызывайте их напрямую по мере необходимости и столько раз, сколько необходимо.

ПРИМЕР:

library.php

function my_function_1() { }
function my_function_2() { }

index.php

include('library.php');

my_function_1();   // call the first function
my_function_2();   // call the second function
my_function_1();   // call the first function again, just because we can

Вы не сможете сделать это через HTTP запрос и даже если вы сделали hardcode ваш some_function.php Для выполнения некоторых функций, подобных описанным выше, вы получите действительно плохой код, который будет сложно настроить в соответствии с вашими потребностями и практически невозможно поддерживать, когда он станет больше.

1

Другие решения

Вы не можете передать строку запроса через локальный file_get_contents позвоните, как показано.

Если вы используете file_get_contents на удаленном HTTP-URL вы сможете использовать строку запроса, но это будет значительно медленнее, чем локальный include или же file_get_contents,

Можно, кстати, еще include то, что нужно $_GET/$_POST переменные:

<?php

$_GET['something'] = true;

include('something.php');
0

По вопросам рекламы [email protected]