php include文件太慢,关于php:在函数中加入include会减慢执行速度吗?

我有一个PHP函数,该函数需要对SOAP请求的授权才能获取数据并对其进行处理。 我想将用户名/密码保留在auth.php中的程序外部,并使用如下include语句:

include 'auth.php'; // Contains $username and $password.

我通常在PHP程序顶部使用include语句。 但是我不想将值传递给函数,所以我将include语句放入函数中。

这是否会减慢程序的速度,因为它在每次调用该函数时都会读取auth.php,或者PHP会读取所有包含文件并将其保留在程序中,因此每次调用此函数时都不会读取同一auth.php文件?

我考虑过使用DEFINE来代替为用户名/密码设置变量,以便在整个程序中都可以访问它们,但是不确定是否必要。 谢谢!

函数接受参数,请使用该功能传递用户名和密码。 不要包括包含它们的文件。 它的坏习惯。

@ Twisted1919您能解释一下为什么它是不好的做法吗?

原因有很多(不必要的文件依赖,方法内部的黑魔法,开发人员试图了解其工作原理的伏都教徒,无法正确记录等)。 只需避免它,并使用params编写适当的方法即可。

一百万次include调用可能花费与单个SOAP请求一样多的时间。

尽管我真的同意@ Twisted1919在评论中的内容,并且我认为您应该听取他的建议,但我也想回答您的问题(这会减慢执行速度吗?)。

我之所以说"不太重要",是因为非常简单的原因:即使本地完成,SOAP也会隐藏XML编码和解析。 加上您提到的"数据处理",您会发现该功能完成的全部工作要比读取和解析(大概)仅定义几个变量的PHP文件要多得多。 因此,这部分确实微不足道。

好的,所以这与性能执行时间无关,但是要考虑的是编程风格。 我同意,我会将其移出功能范围,因为我也担心软件的维护能力,并且没有令人信服的理由去做被认为"奇怪"的事情。 感谢所有发表评论的人!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是基于Keil和AT89C51单片机和定时器的代码,可以通过P3.2和P3.3加快和减慢LED闪烁速度: ```c #include <reg51.h> #define FREQ_OSC 12000000UL // 定义晶振频率 #define TIMER_PRESCALER 12 // 定义定时器分频系数 sbit LED = P1^0; // 定义LED连接的端口 void delay_ms(unsigned int count) { // 毫秒级延时函数 unsigned int i, j; for (i = 0; i < count; i++) { for (j = 0; j < 112; j++); } } void timer0_init() { // 定时器0初始化函数 TMOD &= 0xF0; // 清零定时器0模式位 TMOD |= 0x01; // 设置定时器0为模式1 TH0 = 0xFC; // 初始化定时器0高位计数器,计数值为2ms TL0 = 0x66; // 初始化定时器0低位计数器,计数值为2ms ET0 = 1; // 开启定时器0断响应 EA = 1; // 开启总断响应 TR0 = 1; // 启动定时器0 } void timer0_isr() interrupt 1 { // 定时器0断服务函数 static unsigned char count = 0; // 静态变量计数 count++; // 计数器自增 if (count >= 100) { // 如果计数器超过100,则LED翻转 count = 0; // 计数器清零 LED = ~LED; // LED翻转 } } void main() { unsigned char speed = 10; // 初始化LED闪烁速度,取值范围为1~100,越小速度越快 unsigned int reload_value; // 定时器重装载值 reload_value = (65536 - FREQ_OSC / TIMER_PRESCALER / 1000 * speed * 2) & 0xFFFF; // 计算定时器重装载值 TH0 = reload_value >> 8; // 初始化定时器0高位计数器 TL0 = reload_value & 0xFF; // 初始化定时器0低位计数器 timer0_init(); // 初始化定时器0 while (1) { if (!P3_2) { // 如果P3.2被按下,则加快LED闪烁速度 if (speed > 1) { // LED闪烁速度最小为1 speed--; // 速度自减 reload_value = (65536 - FREQ_OSC / TIMER_PRESCALER / 1000 * speed * 2) & 0xFFFF; // 重新计算定时器重装载值 TH0 = reload_value >> 8; // 更新定时器0高位计数器 TL0 = reload_value & 0xFF; // 更新定时器0低位计数器 } delay_ms(500); // 延时一段时间,避免按键反弹造成多次响应 } else if (!P3_3) { // 如果P3.3被按下,则减慢LED闪烁速度 if (speed < 100) { // LED闪烁速度最大为100 speed++; // 速度自增 reload_value = (65536 - FREQ_OSC / TIMER_PRESCALER / 1000 * speed * 2) & 0xFFFF; // 重新计算定时器重装载值 TH0 = reload_value >> 8; // 更新定时器0高位计数器 TL0 = reload_value & 0xFF; // 更新定时器0低位计数器 } delay_ms(500); // 延时一段时间,避免按键反弹造成多次响应 } } } ``` 在以上代码,我们使用定时器0来控制LED的闪烁速度。定时器0的断服务函数每隔2ms执行一次,当计数器超过100时,LED翻转一次,从而控制LED的闪烁频率。 在`main()`函数,我们使用P3.2和P3.3来控制LED的闪烁速度。当P3.2被按下时,LED的闪烁速度加快;当P3.3被按下时,LED的闪烁速度减慢。我们使用`delay_ms()`函数来延时一段时间,避免按键反弹造成多次响应。 以上就是基于Keil和AT89C51单片机和定时器的代码,可以通过P3.2和P3.3加快和减慢LED闪烁速度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值