Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Apache: 64 bit int
 
 автор: Director_Of_Zoo   (06.11.2011 в 11:38)   письмо автору
 
 

Доброго дня!
Сразу оговорюсь:
платформа i7 core intel 920 2.67 ГГц Windows Web Server 2008 R2 64bit
Столкнулся с переполнением в php. Код переписывался с си подобного языка. Вычисления содержат очень много битовых операций. В оригинале использовался unsigned int, в php аналога нет, поэтому используется просто int, который ограничивается на 32 bit платформе числом 2147483647. Но даже пляски с бубном не помогли ограничится платформой 32 bit. Перелопатил кучу информации и выяснил, что можно поставить php 64 bit + apache 64 bit и тогда int примет максимальное значение 9223372036854775807, что, как говорится, для меня за глаза. На данный момент официально только Mysql имеет 64 bit, пришлось найти любительские сборки php+apache 64 bit. Гугл говорит - здесь есть - http://www.anindya.com/. Скачал поставил, в информации phpinfo:
Build Date May 13 2010 21:36:58
Compiler MSVC9 (Visual C++ 2008)
Architecture x64
Configure Command cscript /nologo configure.js "--with-xsl" "--with-xmlrpc" "--with-sqlite" "--enable-soap" "--with-pdo-sqlite" "--with-pdo-pgsql" "--with-pdo-odbc" "--with-pdo-mysql" "--enable-pdo" "--with-mysqli" "--with-mysql" "--enable-exif" "--with-tidy" "--with-sqlite3" "--enable-sockets" "--enable-shmop" "--with-pgsql" "--with-openssl" "--with-mcrypt" "--enable-mbregex" "--enable-mbstring" "--with-ldap" "--enable-intl" "--with-gettext" "--without-t1lib" "--enable-fileinfo" "--with-curl" "--enable-apache2-2handler" "--with-snapshot-template=..\deps\template" "--enable-http"
PROCESSOR_ARCHITECTURE AMD64
PROCESSOR_IDENTIFIER Intel64 Family 6 Model 26 Stepping 5, GenuineIntel

Все вроде 64 bit, но php имеет опять 32 разряда что подтверждается кодом:
<?php
print "PHP_INT_MAX: " PHP_INT_MAX "\n";
print 
"PHP_INT_SIZE: " PHP_INT_SIZE " bytes (" . (PHP_INT_SIZE 8) . " bits)\n";
?>

результат:
PHP_INT_MAX: 2147483647
PHP_INT_SIZE: 4 bytes (32 bits)
пляски с переставлением различных версий php и апача от разных сборщиков большего результата не дали.
Может кто имел опыт установки 64 bit платформы под виндой. К сожалению на сервере крутятся 2 windows приложения и перейти под линукс не получится. Помогите советом.

  Ответить  
 
 автор: cheops   (06.11.2011 в 12:57)   письмо автору
 
   для: Director_Of_Zoo   (06.11.2011 в 11:38)
 

А если ориентироваться не на PHP_INT_MAX, а на фактический размер, результат тоже в 2147483647 упирается?

  Ответить  
 
 автор: Director_Of_Zoo   (06.11.2011 в 14:23)   письмо автору
 
   для: cheops   (06.11.2011 в 12:57)
 

именно так

  Ответить  
 
 автор: Director_Of_Zoo   (11.11.2011 в 09:05)   письмо автору
 
   для: Director_Of_Zoo   (06.11.2011 в 11:38)
 

Сам решил проблемы:
на сервере с Windows Web Server 2008 поднял Хост виртуальный машины с предустановленым linux ubuntu 64 bit / apache 64 bit / php 64 bit. Сделал шару папку в винде и подмонтировал её в линукс машине как рабочую папку для апача. вот и всё. хост висит на 80 порту и слушает запросы. Конечно это съело часть ресурсов системы, но зато работает как нужно, тем более щас сервера с безумными ресурсами по железу стали.
Инт теперь имеет предел 9223372036854775807

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования