Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尽可能少地执行一个方法-PHP_Php_Optimization - Fatal编程技术网

尽可能少地执行一个方法-PHP

尽可能少地执行一个方法-PHP,php,optimization,Php,Optimization,我有一个多语言的网站。我有一个方法可以返回数组中的当前货币。然后我在表格中显示这些货币 // --- en/index.php <?php include_once "../exchangeRates.php"; $currencies = ReadExchangeRates(); // --- fr/index.php <?php include_once "../exchangeRates.php"; $currencies = ReadExchangeRates(); ..

我有一个多语言的网站。我有一个方法可以返回数组中的当前货币。然后我在表格中显示这些货币

// --- en/index.php
<?php
include_once "../exchangeRates.php";
$currencies = ReadExchangeRates();

// --- fr/index.php
<?php
include_once "../exchangeRates.php";
$currencies = ReadExchangeRates();

...
// somewhere in the page
<td><?php echo $currencies["eur"]["today"]; ?></td>
/--en/index.php
因此,每次我加载,
en/
fr/
或其他语言时,我都会从外部站点请求汇率

我是否可以优化此行为(每天或每节课阅读一次)


可能要存储一个全局变量并检查更新日期?

将结果存储在数据库中,根据需要随时从cron作业调用脚本。。每天,每小时,任何让你高兴的事情。

将结果存储在数据库中,根据需要随时从cron作业调用脚本。。每天,每小时,任何让你高兴的事情。

这可能是一个好的模板引擎的优势之一,比如。Smarty允许您根据自己喜欢的时间间隔有效地缓存页面的部分内容,它会为您处理这些内容

其他模板引擎可能也有类似的功能,当然你可以自己做

但首先你应该问:这真的是个问题吗?渲染所需的时间。如果这是一个真正的问题,我会感到惊讶,但这取决于它从哪里获得信息以及如何实现负载


或者,如果它们来自不可靠的东西(例如Web服务),您可能希望从外部脚本加载它们,并将它们存储在内存缓存(eg)中,或者仅存储在数据库中。

这可能是一个好的模板引擎(如Web服务)的优势之一。Smarty允许您根据自己喜欢的时间间隔有效地缓存页面的部分内容,它会为您处理这些内容

其他模板引擎可能也有类似的功能,当然你可以自己做

但首先你应该问:这真的是个问题吗?渲染所需的时间。如果这是一个真正的问题,我会感到惊讶,但这取决于它从哪里获得信息以及如何实现负载


或者,如果它们来自不可靠的东西(例如Web服务),您可能希望从外部脚本加载它们,并将它们存储在内存缓存(例如)中,或者仅存储在数据库中。

您要查找的关键字是

在您的情况下,我们的想法是只在更新汇率时获取汇率。例如,如果您的脚本是,那么费率每天都会更改(大约1400 CET)。没有必要一天多拿一次

我能想到的构建缓存的最简单自定义实现是存储来自Forex调用的结果,并将结果序列化到文件。然后,当对服务进行第二次调用时,检查文件的上次修改时间。如果呼叫时间早于(例如24小时),请将呼叫发送到外部站点并替换该文件。如果没有,请取消序列化内容,而不是调用外部站点

由于缓存是一个常见的概念,因此有许多实现可供选择,例如,和抽象层,如PEAR或。Smarty也可以使用您的外汇服务缓存任何模板,但这是个人的

另见此相关问题:


您要查找的关键字是

在您的情况下,我们的想法是只在更新汇率时获取汇率。例如,如果您的脚本是,那么费率每天都会更改(大约1400 CET)。没有必要一天多拿一次

我能想到的构建缓存的最简单自定义实现是存储来自Forex调用的结果,并将结果序列化到文件。然后,当对服务进行第二次调用时,检查文件的上次修改时间。如果呼叫时间早于(例如24小时),请将呼叫发送到外部站点并替换该文件。如果没有,请取消序列化内容,而不是调用外部站点

由于缓存是一个常见的概念,因此有许多实现可供选择,例如,和抽象层,如PEAR或。Smarty也可以使用您的外汇服务缓存任何模板,但这是个人的

另见此相关问题:


所有变量都随脚本一起消亡,无论是全局变量还是本地变量,它们不能用于缓存目的

根据您的资源,您有几种解决方案:

  • 您可以选择汇率,将其作为字符串存储到文件中。当您需要打印它们时,请阅读;如果它早于X,请从外部服务器获取新数据,否则将显示当前数据

  • 当然,您可以简单地将原始数据存储在适当的SQL数据库中,并定期进行更新


所有变量都随脚本一起消亡,无论是全局变量还是本地变量,它们不能用于缓存目的

根据您的资源,您有几种解决方案:

  • 您可以选择汇率,将其作为字符串存储到文件中。当您需要打印它们时,请阅读;如果它早于X,请从外部服务器获取新数据,否则将显示当前数据

  • 当然,您可以简单地将原始数据存储在适当的SQL数据库中,并定期进行更新


从问题中可以看出,我是一名php初学者,因此我对实现“Smarty”或类似的东西表示怀疑。从问题中可以看出,我是一名php初学者,因此我对实现“Smarty”或类似的东西表示怀疑。