为什么php不适合做计算密集型业务?
PHP,即"超文本预处理器"是一种通用的开源脚本语言。PHP是一种在服务器端执行的脚本语言,类似于C语言,是一种常用的网站编程语言。PHP的独特语法是C、Java、Perl和PHP自己的语法。有利于学习,应用广泛,主要适用于Web开发领域。
1.优点:开源,免费,快速【程序开发快,运行快,技术本身学习快】
1)跨平台,性能优越,与Linux/Unix结合时比与Windows结合时强45%,与许多免费平台结合时非常经济,如LAMP(Linux/Apache/Mysql/PHP)或FAMP(FreeBSD/Apache/Mysql/PHP),或者如果数据应用足够大,可以考虑换成PostgreSQL或Oracle,支持N种数据库。(编号10)
2)语法简单,学C和Perl很容易,部分和ASP差不多。有成熟的开发工具,如NuPHPed、ZendStudio等。,而Eclipse可以在Linu台下使用。
3)目前支持主流技术,如WebServic::DB作为数据库抽象层,用Smarty或者smarttemplate作为模板层,如果是PHP5.1就用PDO(PHP数据对象)访问数据库。
5)有很多成熟的框架,比如phpMVC,Prado,Cake等等,支持MVC,类似事件驱动的框架,像RubyOnRails这样的快速开发框架,足以满足你的应用需求。
6)PHP5有成熟的面向对象体系,可以适应基本的面向对象要求。适合开发大型项目。
7)有成熟的社区支持PHP的开发。
8)目前很多大型应用都使用PHP,比如淘宝、雅虎、163、新浪等大型门户,很多都选择PHP作为自己的开发语言,所以大型门户都可以选择,我觉得够你用了。
9)有很多开源框架或者开源系统可以使用。比如大家熟知的开源框架有Zendframework、CakePHP、CodeIgniter、symfony等。,开源论坛包括Discuz!、Phpwind等。、开源博客WordPress、开源网店系统如Ecshop、ShopEx等。开源SNS系统如UCHome、ThinkSNS等。
10)低成本(linuxapachemysqlphp内核)
2.不足之处
1)函数命名不规范驼峰法和滑移线,传递参数的位置不一样,大家都知道。
2)单线程;PHP本身一直是单进程程序;虽然phpspthreads扩展早已存在。但是不够稳定,运行起来会莫名其妙的挂掉;Php扩展都是用c写的,也就是说任何一个有线程竞争资源控制问题的扩展都能让整个一个死掉。
3)核心异步网络不支持(当然linux中只有同步无阻塞网络模型)。然而,缺乏这一点使得开发能够承受大并发的网络应用程序变得困难。传统网络模型和io都被阻塞。这个基本的编程实践是一个进程(或线程)响应一个用户链接请求。所以不可能像实时网游那样完成需要上千个网络连接的任务。虽然php也有Libevent和eio扩展在一定程度上弥补了这一点,但感觉不是那么完美。
4)只支持web开发,制作不方便。exe文件、桌面应用程序和手机程序。
5)不适合做爬虫,自动运行脚本和科学计算项目,这种语言的基本框架也不适合,虽然有很多实现。
6)后期维护困难。后期提速的空间有限。
在对PHP有了大致的了解之后,让让我们理解为什么PHP很慢。
PHP的慢是相对于C/C级别语言而言的。事实上,PHP语言最初的设计并不是用来解决计算密集型的应用场景。我们大致可以理解为PHP为了提高开发效率而牺牲执行效率。
我们知道PHP的一个很大的特点就是弱类型化,也就是我可以随意定义一个变量,随意赋给各种类型的数据。以int整数为例,在C语言中:
intnum200//通常是4个字节。
但是,如果PHP定义了相同的变量,实际对应的存储结构是:
这个结构将比C变量占用更多的内存,C变量在PHP中定义如下:
200澳元;//这个变量实际上会比C变量多占用很多倍的存储空间。
事实上,对于PHP来说,无论存储什么类型的数据,都是通过上面提到的"灭口"结构。为了兼容PHP程序员变量类型,PHP对开发者友好,但对执行引擎残酷。单个变量的内存消耗可能不明显。一旦使用PHP数组,复杂度指数就会上升(数组的实现是HashTable)。然后,当Zendengine执行时,它将这些PHP代码编译成操作码(PHP中间字节码,格式有点类似于汇编),由Zend引擎逐行解释执行。
无论是字符串连接操作或数组的简单修改。;几乎是amp的节奏PHP程序员的一句话和Zendengine"。所以PHP相对于C来说,同样的操作消耗更多的CPU、内存等系统资源。另外还有内存自动回收,变量类型判断等等,都会增加系统资源的消耗。
比如我用纯PHP实现的快速排序函数和原生排序函数,对一万个整数进行排序,进行耗时的比较。结果如下:
原生sort需要3.44ms,而我们自己的PHP函数sort需要68.79ms我们发现两者的实现效率差距巨大。我的测试方法是计算函数执行前后的时间间隔,而不是整个PHP脚本从开始到结束的时间。PHP脚本的启动和关闭过程本身就有一系列的初始化和清理工作,也会占用大量的时间。
一般来说,PHP执行效率的排名是:
最快的是PHP语言结构(isset,echo等。),PHP语言的一部分(它们根本不是函数)。
那么越快就是PHP的原生和扩展功能。PHP扩展,基于ZendAPI,用C实现的功能,执行效率和C/Java属于同一数量级。
什么?;真正慢的是我们通过PHP编写自己的代码和函数。比如我们用纯PHP实现的比较重的框架,因为框架本身的模块比较多,明显会拖累语言层面的执行效率,占用内存比较多。(国内的Yaf框架是用扩展的实现的,所以执行效率比纯PHP编写的框架快很多。
一般来说,我们不。;不推荐用PHP实现逻辑复杂的计算类型的功能,尤其是在Web系统流量比较大的场景下。所以PHP程序员应该对PHP的各种原生函数和扩展有广泛的了解,在具体的功能实现场景中寻求更多的原生解决方案(原生接口或扩展),而不是写一堆复杂的PHP代码来实现这类功能。
如果有足够的PHP扩展开发实力,将这类业务功能改写成PHP扩展也会大大提高代码的执行效率。这是一个非常好的方法,广泛应用于PHP优化。但是自己写的PHP业务开发的缺点也很明显:
扩展开发时间长,需求变化时修改复杂。写的不好可能会影响Web服务的稳定性。(比如Apache的worker模式,在多线程场景中挂起会影响到同一个进程中的其他正常子线程。如果是多线程Web模式,写扩展也需要支持线程安全)
当扩展PHP版本升级时,您可以可能需要做额外的兼容工作。
后的维护和接管成本也比较高。
其实在互联网一线企业中,比较常见的解决方案不是增加PHP的扩展,而是用C/C独立编写一个服务服务器,然后PHP通过sock
网站建设需要多少钱?都有哪些成本?
边肖干脆给楼主做个预算!
首先,必要条件是60元左右的域名。其次,需要网站空间。虚拟空间:1克空间25元左右一个月,国内相对便宜,但是需要备案。VPS:如果后面需要这个,价格不为!
其次,要有一套网站流程,这要看楼主是否懂网站建设。如果是大型网站,肯定要找人设计一套专属的网站模板。如果只是个人站长,楼主可以直接在网上搜索网站源代码,基本是免费的。我们拿回来之后,只需要做适当的修改。
其实制作一个网站的成本不到100元。当然,边肖说的只是简单的个人网站建设。后期要做的就是seo。一般个人网站都是SEO。如果是公司或企业的大型网站,没有信誉的话需要竞价排名,所以价格会更多!