PHP为什么没有32位和64位版本之分的?整个int的差别是怎么做到无差异化的?

2013-11-27 21:10:44 +08:00
 fucktwice
8568 次点击
所在节点    PHP
11 条回复
freeznet
2013-11-27 21:13:23 +08:00
fucktwice
2013-11-27 21:20:48 +08:00
@freeznet 看到了,我就是想知道怎么做到无差异化的? 还有5.5之后不支持xp是什么意思?
likexian
2013-11-27 22:59:12 +08:00
1. 谁说没有32和64之分,求出处,看看哪个2b说的

2. xp微软都不更新了还指望php,这个漏洞百出的系统早该废了
BOYPT
2013-11-27 23:01:54 +08:00
32 PHP和64 的PHP里面的整数本来就是不一样,哪里来无差异……
felix021
2013-11-27 23:03:06 +08:00
谁说没有32和64之分? zval里面是用long,不是用的int。

http://git.php.net/?p=php-src.git;a=blob;f=Zend/zend.h

321 typedef union _zvalue_value {
322 long lval; /* long value */
323 double dval; /* double value */
324 struct {
325 char *val;
326 int len;
327 } str;
328 HashTable *ht; /* hash table value */
329 zend_object_value obj;
330 } zvalue_value;
fucktwice
2013-11-27 23:51:43 +08:00
@felix021 那为什么不出一个32位版本和64位版本呢?
事实是底层已经屏蔽掉了,但是具体的比如CRC校验的算法或者其他方面应该随着平台的差异性,还是会有区别的吧?
fucktwice
2013-11-27 23:54:26 +08:00
这样的话,在接口API层其实已经没有差异了,但是实际的还是会有差别的,那具体的差别呢?
比如内存管理,算法选择,IO方面等等。
vibbow
2013-11-28 09:14:38 +08:00
很明显是有区别的
32位的PHP,在ip2long的时候就经常会溢出成负数。
64位的就不会。
joyqi
2013-11-28 10:05:32 +08:00
所有软件的源代码是不会区分32位和64位的,在不同的平台编译后的二进制程序才会体现这些区别。你看windows二进制包下载,http://windows.php.net/download/,里面清晰的表明了x86和x64两种
fucktwice
2013-11-28 11:41:59 +08:00
明白了,vibbow说的问题也确实存在。
coronanimo
2013-12-15 21:28:56 +08:00
就不要用32位的了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/90892

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX