通过HTTP从另一个PHP脚本调用函数:是速度较慢还是其他原因


Calling a function from another PHP script via HTTP: is it slower or anything else?

假设我有一个PHP文件some_function.php,我可以用file_get_contents('some_function.php?' . $parameters_string)(或任何类似的函数)运行它。该函数的参数可以通过GET或POST HTTP方法给出。

相反,我可以include所需的文件,并在一个脚本中使用此函数。

我可以弄清楚,如果我需要运行一个单独的进程,或者我需要在一个独立的服务器上运行这个函数,这可能是合理的。但如果没有,有什么理由不这样做吗?这个电话可能会慢很多吗?还有什么需要我考虑的吗?

我知道我将不能使用全局变量(无论如何,我认为这是一种糟糕的编码风格)。

通过使用file_get_contents(),您实际上不会调用有问题的函数,而是会发出HTTP请求,传递一些预定义的参数,然后这些参数将传递给代码中的函数。

使用include(),您可以在该文件中有一个classesfunctions库,并根据需要直接调用它们,并且根据需要多次调用它们。

示例:

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文件来实现如上所述的一些功能,您最终也会得到非常糟糕的代码,这些代码很难根据您的需求进行自定义,而且一旦变得更大,几乎不可能进行维护。

您不能通过本地file_get_contents调用传递查询字符串,如图所示。

如果在远程HTTP URL上使用file_get_contents,则可以使用查询字符串,但这将比本地includefile_get_contents慢得多。

顺便说一句,你仍然可以include需要$_GET/$_POST变量的东西:

<?php
$_GET['something'] = true;
include('something.php');