为什么facebook的hiphop把php转换成了C++而不是把php改成编译型的语言,直接执行编译后的文件不是更快吗?
hippop设计的初衷不是要转换源代码,而是要节省服务器资源。
开发来开发去,他们发现一个意想不到的收获,就是这东西可以提升程序的执行性能,于是深挖了下去,把hippop完善起来。
2013年,他们发现这条路子不对,就废弃了hiphop方式,转而改用hhvm,通过虚拟机即时编译的方式来处理它们服务器上大量的php代码,提升服务器的执行性能。
至于为什么不把php改为编译型语言,这个问题很有意思。如果要用编译型语言,有很多现成的编译型语言可以直接用啊,没必要去改一个过来。他们的主要目的是要处理那一大堆正在成千上万台服务器上跑着的php代码,让它们跑快些,占用服务器的资源少一些,不然的话,性能倒是一回事,另外,项目一扩张,就要添置更多的硬件,就要更多人更多精力来维护,这样滚雪球下去管理上的问题会很恐怖。
如果把php改成编译型语言,其实就等于开发了一门新的语言。那旧的代码怎么办?退一步想,他们旧的代码继续维持用旧的方式运行,新项目就用新的语言来开发。可是开发新的语言需要时间,开发出来后,还需要开发大量的类库,函数库,否则这语言就没实际用处。就像c#开发出来了,还要有.net类库做后盾。这么做成本也太高了。
相对而言,用hiphop把php转成c++,利用c++已有的资源是可行的。而且不用改动旧的代码。但是这么做也有麻烦。编译的动作比较耗时,如果有某个地方php代码升级了,或者修复漏洞,或者因为其它原因做了改动,就得重新编译。这还不考虑跨平台等其他因素。
那么,最好的办法就是现在他们采用的虚拟机即时编译的方法。只要做好虚拟机就行了。
PHP做的网站怎么实现中文和英文、繁体中文语言切换?
在PHP网站中,我们要实现不同语言的切换,可以使用二维数组把不同的语言分别储存在二维数组的单个子数组之中,每一个子数组都包含了相同意思的不同语言,在我们要调用的时候就直接使用索引来调用。
PHP如何将多维数组有效转成JSON?
引言
虚头巴脑的大道理就不讲了,直接上代码。
我们说一下把PHP嵌套的数组,转换为JSON字符串,提供给JS前端用。
基本面使用json_encode函数将PHP数组传递给JSON字符串和JavaScript数组。在本文,我们使用多维数组进行演示。一个数组是数字索引的,另外两个是混合数字和字典关联的。
无论PHP数组是单级的还是多级的,或者是数字索引的还是关联索引的,下面的代码放在一个JavaScript段中,将会输出到JavaScript:
你可能希望使用JavaScript的JSON。解析来处理PHP的json_encode的结果,在这种情况下,使用以下代码:
对于下面的示例数组,首先用PHP显示该数组,然后包括用于输出它的json_encode的JavaScript段,然后显示输出。最后展示在JavaScript中用于访问结果数组元素或对象属性的语法。
示例数组1默认情况下,json_encode将数字索引的PHP数组输出为JavaScript中的数组文本。关联的PHP数组作为对象文本输出。
示例数组2在json_encode输出中,外层是数组文字,而第二层形成对象文字。下面的代码注释演示了如何使用JSON_PRETTY_PRINT选项和json_encode实现更可读的输出:
更复杂的数组结构这个例子演示了如何使用JSON。解析json_encode的输出。PHP标记为此用单引号括起来。
访问方式可以是索引键,可以是数字。
我们不能在JSON.parse中使用JSON_PRETTY_PRINT,因为那会导致JavaScript错误:未终止的字符串文字。
写在最后本文通过深度对比PHP的数组,与JS的JSON对象之间的数值转换,可以较为清晰地掌握关键点,而不至于频频踩坑。
Happy coding :)
我是@程序员小助手,持续分享编程知识,欢迎关注。php如何实现页面跳转?
1.header 函数
2.返回一个html 里面包含meta 的跳转
3.返回一个html 里面包含script 然后用js来实现跳转
大概想到这么三种
php中insert键有什么用?
insert键是电脑键盘的一个键,主要用于在文字处理器切换文本输入的模式,一种为覆盖模式,光标位置新输入字会替代原来的字;另一种为插入模式,新输入的字插入到光标位置,原来的字相应后移。
Windows系统默认光标位置插入字符,而光标向后移动,即输入时对光标后字符无影响。 但是Insert是嵌入,即插入并覆盖,所以当按下Insert键后再输入,光标后的字符会被消去,即被当前输入字符替换掉,再次按下后则会还原到默认插入状态。