您的位置:

php静态编译,php伪静态代码

本文目录一览:

PHP大型门户站是用静态好,还是伪静态好

你好。大型门户 一般是生成纯静态html,如果使用伪静态会占用一定的CPU使用率,对于大型门户,这并不合适。

纯静态的好处:

1、加载的时候不需要调用数据库,打开速度快。

2、减少了服务器对数据响应的负荷。

3、从安全角度讲,纯静态网页不易遭受黑客攻击。

4、从网站稳定性来讲,即使网站代码或数据库出了问题,静态网站也不会受到影响。

伪静态的好处:

1、维护方便,网页每天都自动变化,不用维护或者说极大地减少了维护量。

2、可以方便的实现对搜索引擎的优化,易于被搜索引擎收录。

3、缩短了url的长度,隐藏文件实际路径提高了安全性,易于用户记忆和输入。

4、占空间比较小,不像纯静态那样多占用近过多的空间。

5、安全性能通过url地址隐藏或加密,让黑客无法找到真实的动态页面,同时动态文件不需要太高的权限,从而避免了木马的注入。

结论:

伪静态最大的缺点就是会占用一定量的CPU使用率,增加服务器的响应时间。

1、既然真伪静态和伪静态对搜索引擎的效果一样,我们就可以选择伪静态了,毕竟它的优点是纯静态不可取代的。

2、大量使用伪静态会照成CPU超负荷,所以我们只要不大量使用就可以了,设计在线使用了相应的编译缓存技术,己经很好的优化并解决这个问题了。

php 类中的static有什么作用

static 是C中很常用的修饰符,它被用来控制变量的存储方式和可见性

static 声明的变量在C语言中有两方面的特征:

1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。

2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

2、问题:Static的理解

关于static变量,请选择下面所有说法正确的内容:

A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;

C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;

D、静态全局变量过大,可那会导致堆栈溢出。

答案与分析:

对于A,B:根据本篇概述部分的说明b),我们知道,A,B都是正确的。

对于C:根据本篇概述部分的说明a),我们知道,C是正确的(所谓的函数重入问题,下面会详细阐述)。

对于D:静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出,D是错误的。

因此,答案是A、B、C。

3、问题:不可重入函数

曾经设计过如下一个函数,在代码检视的时候被提醒有bug,因为这个函数是不可重入的,为什么?

unsigned int sum_int( unsigned int base )

{

unsigned int index;

static unsigned int sum = 0; // 注意,是static类型的。

for (index = 1; index = base; index++)

{

sum += index;

}

return sum;

}

答案与分析:

所谓的函数是可重入的(也可以说是可预测的),即:只要输入数据相同就应产生相同的输出。

这个函数之所以是不可预测的,就是因为函数中使用了static变量,因为static变量的特征,这样的函数被称为:带“内部存储器”功能的的函数。因此如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量,这种函数中的static变量,使用原则是,能不用尽量不用。

将上面的函数修改为可重入的函数很简单,只要将声明sum变量中的static关键字去掉,变量sum即变为一个auto 类型的变量,函数即变为一个可重入的函数。

当然,有些时候,在函数中是必须要使用static变量的,比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

PHP和.NET做大流量的网站哪个好,急

这里说下,.net是一个开发和运行平台,里面有c# vb.net等

1.从团队技术层面来说,用php或.net开发都可以,只要你或者你的团队熟悉哪方面都是可以的。

2.从设备成本层面来说,.net为微软平台,因此有较高的版权费用,而php则多为开源系统,如果想做大网站还是要提早考虑这一点。

3.从语言本身效率来说,由于php是动态语言,脚本语言,而.net则多为静态编译语言。动态语言是不直接编译。故而效率来说.net相对会高效一些。

4.从跨平台来说,php为开源方面,则支持扩平台,而.net一般局限在微软的windows平台上。

5.从开发应用角度来说,php多为web程序,.net既可以开发web也可以winform,还可以开发window phone程序。

6.从厂商支持来说,php为开源组织,缺乏大商家的支持,这有利也有弊,而.net为微软支持。

7.从目前应用范围,php应用范围较广,很多大的互联网公司基本都采用php开发模式。

以上仅供参考,你要根据你们目前现状来制定采用何种开发语言。

如果熟悉php可以用php开发网站。

如果熟悉.net可以用.net开发网站,等做大了再换成开源的程序。

php中为什么静态变量不用实例化?

你没学过C语言和C++吗???? 静态变量只能声明一次,在你连接一个类时,所有的静态变量和静态函数都已经定义并启用了,而且不能再动态生成新变量和函数,所有实例化的对象公用一个静态变量和静态函数,静态类也是如此,静态类是不能实例化的,但能直接用。。。。

c++语言里static标记的函数和变量,都不能进行第二次申请内存,只有动态的有auto标记的才可以执行一次语句申请一次内存,即实例化(这个关键字是默认的通常不写,没有就代表是auto),所有语言的静态和动态意思都是一样的,静态变量或函数都有特殊的静态标识符,通常都是static ,PHP也是一样,所有编译器和解释器一但看到这个标志,就不会第二次执行该声明语句,所以也没法实例化,可以直接用,但用的都是同一个。。。

php中的静态变量和动态变量的区别

动态变量和静态变量的区别:

1、存储位置

动态变量:存储在内存出栈数据区

静态变量:存储在全局数据区(静态数据区)

2、生命期

动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效

静态变量:程序结束时才释放

3、作用域

动态变量:同样的要根据你定义的位置才能确定,和第二点的一样

静态变量:当前文件中有效

堆和栈的区分:

堆(Heap)栈(Stack)

1、内存分配方面:

堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。

栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、申请方式方面:

堆:需要程序员自己申请,并指明大小。在c中malloc函数如p1 = (char *)malloc(10);在C++中用new运算符,但是注意p1、p2本身是在栈中的。因为他们还是可以认为是局部变量。

栈:由系统自动分配。 例如,声明在函数中一个局部变量 int b;系统自动在栈中为b开辟空间。

3、系统响应方面:

堆:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码中的delete语句才能正确的释放本内存空间。另外由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。

栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。

4、大小限制方面:

堆:是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

栈:在Windows下, 栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是固定的(是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。

5、效率方面:

堆:是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便,另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是在栈是直接在进程的地址空间中保留一快内存,虽然用起来最不方便。但是速度快,也最灵活。

栈:由系统自动分配,速度较快。但程序员是无法控制的。

6、存放内容方面:

堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。

栈:在函数调用时第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈,然后是函数中的局部变量。 注意: 静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。

7、存取效率方面:

堆:char *s1 = "Hellow Word";是在编译时就确定的;

栈:char s1[] = "Hellow Word"; 是在运行时赋值的;用数组比用指针速度要快一些,因为指针在底层汇编中需要用edx寄存器中转一下,而数组在栈上直接读取。

linux下configure 参数 --with-xx 详解?

--with-apxs2 是指定 apache2 的配置程序路径,php编译程序会通过这个程序查找apache的相关路径--with-libxml-dir 指向的是 libxml2 的库路径--with-gd 指静态编译gd库--with-png-dir 指定 libpng 的路径综上所述,带着-dir的一般是用于指定库文件路径,没有的话可能是启用某些特性或者指向某特定路径。