首页 开发编程 正文

php超大文件怎么办

大部份使用CMS建立的B/s系统多用PHP系统。从全球来看用PHP建立的B/s系统,PHP目前不支持C/S构架大型编程,但PHP的C/S编程机制却是存在的,或者数据应用够大可以考虑换PostgreSQL或者Oracle。...

php超大文件怎么办,PHP现在真的已经过时了吗?

《说PHP过时,那绝不会,只会越来越帅,》

在以互联网为中心时代,pHp只会越来越活跃。全球最大多用的三大CMS系统drupal.joomla.wordpress还是来源于pHP,而占有web服务器装机用量还是高于80%。

中国现在很大型平台也跑PHp了。美国自宫web依然跑PHP。大部份使用CMS建立的B/s系统多用PHP系统。尤其是那种技术力量比较雄厚,业务又繁杂的公司,用PHP还是很多。

从全球来看用PHP建立的B/s系统,大约占80%以上。说它过时,为时太早。

曾经说PHP性能欠缺,但自从PHP升到7.0以后,这问题已小多了。

个人以为,现在只有nodeJs可能能在方便性上战胜PhP,别的系统平台要战胜PhP都不容易。PHP是一个开源平台,其中没漏洞清扫得够干净了。高手们会对PHP的性能进一步提升。

图:目前与未来的物联网依然以互联网为中心,PHP的优势就更加明显

PHP后端功能己很齐备了,未来可能只需要把前端JavascriPt功能进行抽象嵌入其中,那就命变成另一个类似于nodejS的全栈B/s支持系统。毕竟phP的生态系统已经形成,就连PHp7.0的升级都风平浪静,未来前景可能更好。

PHP目前不支持C/S构架大型编程,但PHP的C/S编程机制却是存在的,它形减Python与Java的字节码机制实现并不复杂。那样PHP也就可以全面进入一个新的开发领域。

为什么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种数据库。(N >= 10)

2)语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。

3)目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。

4)有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。

5)有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。

6)PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。

7)有成熟的社区来支持PHP的开发。

8)目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。

9)有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,开源论坛有Discuz!、Phpwind等,开源博客 WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。

10)使用成本低 (linux apache mysql php内核)

2.缺点

1)函数命名不规范 驼峰法和下滑线,传参位置不一 你知道的

2)单线程 ; PHP本身,一直以来php就是个单进程的程序;虽然php的pthreads扩展早就有了。但是它不够稳定,运行运行着就会莫名其妙的自己挂掉;php的扩展都是C写的,这也就意味着任何一个扩展出现线程竞争资源控制问题都能让整个挂掉

3)核心异步网络不支持(当然在linux只有同步非阻塞网络模型)。却少了这个使得很难开发一个能够承受大并发的网络应用。传统的网络模型和io都阻塞的。这样基本的编程的做法就是一个进程(或者线程)响应一个用户链接请求。因此无法完成像实时网游那样需要成千上万网络连接的任务。尽管php也有Libevent、eio扩展对此算是某种程度上面的弥补,但是感觉都不是那么完善

4)只支持web开发,不方便做 .exe文件,不方便做桌面应用程序. 不方便做手机程序.

5)不适合做爬虫、自动运行脚本.科学运算项目,这语言基本构架就不适合,虽然有很多方法实现。

6)后期维护困难。后期提速空间局限性较大。

在对PHP有一个大致的认识以后,我们来了解一下为什么说PHP慢?

PHP的慢是相对于C/C++级别的语言来说,事实上,PHP语言最初的设计,就不是用来解决计算密集型的应用场景。我们可以这样粗略理解为,PHP为了提升开发效率,而牺牲了执行效率。

我们知道PHP一个很大的特点,就是弱类型特性,也就是说,我可以随意定义一个变量,然后给它随意赋值为各种类型的数据。以一个int整型数字为例子,在C语言中:

int num = 200; // 通常是4字节

但是,如果是PHP定义了一个同样的变量,实际对应的存储结构则是:

这个结构体将会占据远比C变量多得多的内存,PHP中定义方式如下:

$a = 200; //这变量将实际占用对比C变量很多倍的存储空间。

其实对PHP来说,无论存储什么类型的数据,都是用上述“通杀”的结构体实现。为了兼容PHP程序员的变量类型“乱入”,PHP做到了对开发者的友好,但是对执行引擎很残酷。单个变量内存消耗可能还不明显,一旦用到PHP的数组等,则复杂度指数上升(数组的实现是HashTable)。然后,Zend引擎执行时,将这些PHP代码编译为opcode(PHP的中间字节码,格式有点类似于汇编),由Zend引擎逐行解释执行。

无论是字符串的连接操作,还是数组的简单修改等,几乎都是“PHP程序员一句话,Zend引擎跑断腿”的节奏。因此,同样的操作,对比C来说,PHP消耗了更多的CPU和内存等系统资源。除此之外,还有内存自动回收、变量类型判断等等,都会增加系统资源的消耗。

例如,我用纯PHP实现的快速排序函数和原生sort函数,排序10000个整型数字,来做一个耗时对比,结果如下:

原生的sort耗时3.44 ms,而我们自己实现的PHP函数sort则是68.79 ms。我们发现,两者执行效率差距巨大。我的测试方式,是计算函数执行前后的时间间隔,而不是整个PHP脚本从启动到结束的时间。PHP脚本启动和关闭过程,本身有着一系列的初始化和清理工作,也会占据不少的耗时。

通常情况下,PHP执行效率的排行是:

最快的是PHP语言结构(isset、echo等),PHP语言的一部分(它们根本不是函数)。

然后比较快的就是PHP的原生和拓展函数。PHP拓展,基于Zend API之上,用C实现的功能,执行效率和C /Java是属于同一个数量级的。

真正慢的就是,我们通过PHP自己写的代码和函数。例如,假如我们使用的比较重的纯PHP实现的框架,因为框架本身的模块很多,所以,会明显拖累语言层面的执行效率,同时占据更多的内存。(国内的Yaf框架,以拓展的方式实现,因此执行效率远快于纯PHP写的框架。

在一般情况下,我们并不推荐用过PHP实现逻辑复杂计算类型的功能,尤其是Web系统流量比较大的场景下。因此,PHP程序员应该对PHP的各种原生函数和各类拓展有一个比较广泛的了解,在具体的功能实现场景中,寻求更原生的解决方案(原生接口或者拓展),而不是自己写一堆复杂的PHP代码来实现这类型功能。

如果有足够的PHP拓展开发实力,将这类型业务功能重写为一个PHP拓展,也会大幅提升代码的执行效率。这是一个非常不错的方式,也被广泛应用PHP优化中。但是,自己编写的PHP业务拓展的缺点也很明显:

拓展开发耗时比较长,需求变更的时候修改也复杂,写得不好可能会影响Web服务稳定性。(例如,在Apache的worker模式下,多线程场景下挂掉,会影响同一个进程下的其他正常子线程。如果是多线程的Web模式,编写拓展还需要支持线程安全)

拓展在PHP版本升级的时候,可能需要做额外的兼容工作。

人员变动后的维护和接手成本也比较高。

实际上,在互联网一线企业中,更常见的解决方案,并非增加PHP拓展,而用C/C 独立写一个服务server,然后PHP通过socket和服务server通信来完成业务处理,并不将PHP本身和业务耦合在一起。

不过,Web服务大部分的性能瓶颈都在网络传输和其他服务server的耗时上(例如MySQL等),PHP执行的耗时在整体耗时的占用比例非常小,所以从业务角度来说,影响可能并不明显。

JSP的区别和适用范围?

ASP(Active Server Pages) PHP (Preprocessor Hypertext Pages) JSP(java Server Pages) 三者重要区别:

1、asp只能运行在win平台上,而php、jsp跨平台。

2、php和jsp是面向对象语言,asp是使用 VB、VC++等语言来编写ActiveX Server Component 来实现。

3、ASP和PHP是解释型的,而JSP是先编译后解释型,由web容器先转成java文件,再编译成class文件,再运行的。

4、asp的站点还有,基本已经被DotNet取代。php的lamp组合完全免费开源,成本小,适合各种web站点开发。jsp开发周期长、成本高,适合大型的企业级应用。

却把难的工作都安排给我?

领导是一门科学,更是一门艺术。显然,你们领导是一个善于用人识人的高手,御人有术,擅长平衡术的人。先看一则故事,或许我们能从中看出一些端倪。

刘鹏是一家公司的营销总监,工作经验丰富,管理手腕灵活,深受老板的赏识。同时,他亦善于激励团队,驭人有方,深受下属的拥戴。但最近,他手下的得力干将关飞有点困惑,看不透他。因为,最近有一个部门经理职位的空缺,他本成竹在胸,以为手到擒拿,非自己莫属。可最终结果,却让他大跌眼镜,最终经理职位却花落张云家。心里很不痛快,张云的能力不如我,业绩不如我,凭什么是他?凭什么是他?关飞一想到这里,内心就愤愤不平。但所幸的是,刘总给关飞涨了2级工资,关飞心里稍显安慰。但仍百思其解,刘总什么意思吗?啥意图呢?

刘总是去年空降到这家公司的,张云也是他一并带过来了。虽然张云资质平平,能力也不是很出众。但他对刘总一直言听计从,执行一向不折不扣,从来没有给刘总捅过什么 篓子,平时,也非常低调,无论在哪里,都很受大家欢迎,对谁都一副笑脸,特别擅长做群众工作,来这家公司之后,很快跟部门的同事打成一片。在这一年来,他工作勤勤恳恳,认真负责,也从不抢领导的风头。虽然,业绩在团队不是最好的,能力也不是最出众的;但大家也挺支持配合他的工作。

反观关飞呢,作为部门资历最老,业绩最好的员工,多次获得公司奖励。但性格有点独来独往,平时,有时候也有点张狂,心高气傲,有很多同事不是很喜欢他。因为,自己业务出色,能力出众,给人感觉总有点瞧不起人的感觉。同事一旦求教于他,总喜欢爱理不理,或者也答疑解惑,但别人不太明白,就喜欢夹枪带棒的寒碜别人,后来,大家就不怎么喜欢请教他了。关飞更是是业务痴迷者,喜欢苦心钻研业务技能,也很有成就,是一把业务好手。

刘总在提拔部门经理的时候,也不是没有考虑过关飞,但自己也挺担心:提拔不好,既不能找一位好的管理者,也可能毁了一个业务能手。最终,思虑再三,还是选择了张云做部门经理。

通过,这个案例,我们或许能看到领导的一些用人之道和驭人之术,能明白领导的良苦用心。如果明白了领导的用人之道,他有何意图就不言自明了。

1.管理是一门科学,更是一门艺术。显然,你们领导深谙此道。

德鲁克说,管理是一门科学,更是一门艺术。你们领导明白了其中的其中的真谛,既解决了问题,又能让大家都开心。既能解决私欲,又能解决公事,一举两得。提拔一个能力差的人,但对自己忠诚,又不能威胁自己的地位;能力差也许不是一位业务好手,但有可能是一位好的管理者,这也许会人尽其才,才尽其用;把难的工作给了你,又给你涨工资,既能用你所长,又能抚慰你,激励你,让你开开心心的工作,多方共赢,很好的平衡了每一个人,何乐而不为呢?

2.提拔人才要对他的情况作全面考虑,任用人才也要一一心一意,你们领导深谙此道!

提拔一个人,是一件不容易的事情,也不是单一维度去考量的,而是要从多维度去考量的。不单单看能力,业务技能,工作成绩,而且要多思考这个人能不能用,好不好用,重不重用。那么在提拔一个人之前,这个人要对他的情况做全面考虑,他的意愿如何?能力如何?口碑如何?民意如何?业绩如何?等等要进行全盘考察,就像上文的刘总一样,不仅要看能力和业绩,也要看适不适合,支持率怎么样等等。考虑之后,那么任用人才呢,也要一心一意,不应该朝令夕改下,朝三暮四,一会儿一个主意。任用好了后,帮他快速融入团队,送她一程。

3.凡用人之道,采之欲博,辨之欲精,使之欲适,任之欲专。你们领导深谙此道!

这就是司马光提出的四条标准:要用人之长处,不求全责备;要仔细分辨,听其言,观其行;要量才适用,让人各得其所,发挥特长,对看准的人才要大胆的使用。或许,你看到能力差的人,领导却不一定这么认为了,或许那个所谓能力差的人,有别的优点是你所不具备的,比如管理能力、执行力,人缘什么的。然后领导认为你更适合做技术骨干或者业务能手,而不适合做管理者,也不是不一定了。这也许就是你们领导识人用人之道的厉害之处呢!

总之,一个好的管理者,知人善用,人尽其才,才尽其用,他们深谙识人用人之道,懂得如何去驾驭人,平衡人,用好人,更明白,管理是一门科学,更是一门艺术的学问和真谛。当然,也不排除个别领导有私心私欲,任人唯亲,亲小人,远贤臣,这样的领导多半会被组织摒弃。根据你的描述,你们领应该不是这样的人。给你的建议,好好完善自己,补充自己除了业务和能力之外的短板,提升自己,全面发展自己。

欢迎关注@职场笑笑生,一起聊聊职场那些事儿!欢迎拍砖,点赞,评论和转发呢!码字不易,您的支持是我最大的动力!

PHP在2018已经过时了吗?

我把题主的问题拆分为两个来解答:1. 现在是移动互联网的天下,PHP没有发展前景。

在这里我要说明一下,“移动互联网”这个词范围太宽范,“编程语言”则是软件开发行业的词汇,我们就如软件开发行业来说,“移动互联应用”,就是我们目前所用的手机APP,常用开发语言Java(java se, android方向)、Swift、Kotlin、OC。但是这些语言所开发出来的软件只是相当于一个客户端(前端),这些客户端都需要后台服务来支撑。而目前的APP后端服务编程语言又分:Java、PHP、Python、Golang等等 ...

PHP作为一个发展十多年的老牌服务器脚本语言,已经在WEB领域占有极大的份额。同时随着互联网的发展,大量的免费学习资源在网络上泛滥,并且其活跃社区仍有一大部分开发者在维护自己的开源项目。

PHP在全球的市场占有率是非常高的,相信下面这句话大家也都见过:

全球5000万WEB网站60%以上都是PHP开发的,而且国内80%的网站也都使用了LNMP的架构。

就目前的PHP开源框架来看,PHP目前拥有Workerman、Swoole这种网络通信框架,已经不仅仅只是适用于普通web网站开发,已经在直播、通信行业具有一定的占有率。

2. 学了PHP有没有用?

任何编程语言学了都有用。

我不能说学了PHP或者学了Python等语言哪个有前途,哪个有用。因为编程语言都是相通的,学习了PHP之后你再学习Python也会非常快速,因为其都是脚本语言,具有很多共性,相反也是一样。

以上回答只代表本人的观点以及经验。对IT行业感兴趣的或者想通过自学进入软件开发行业的欢迎关注,可以提供学习上的帮助。如有不同意见或者需要补充的可以下方评论,多谢指正!

( 评论+关注私信我“java”、“python”、“php”,可以免费分享学习资料哦~ )

本文转载自互联网,如有侵权,联系删除