[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: 64 битный php на windows
Страницы: 1, 2
Bolik
мне по работе приходится работать с огромными файлами и вот недавно столкнулся с проблемой, что fseek не работает с файлами больше, чем 2 гб... на форумах пишут, что все из-за PHP_INT_MAX и 32 битной сборки PHP.

поставил я себе 64 битный апач, такой же PHP. phpinfo() пишет тоже x64, но PHP_MAX_INT такой же, как и на 32 бит... в чем проблема? в железе или 64 битный php на windows не существует? читал кстати и такое..

спасибо!
Invis1ble
Цитата (Bolik @ 18.03.2015 - 22:21)
в чем проблема?

Цитата (Bolik @ 18.03.2015 - 22:21)
такой же PHP

сам же и ответил

Цитата (Bolik @ 18.03.2015 - 22:21)
64 битный php на windows не существует
Bolik
Цитата
такой же PHP


сорри, имел ввиду, что php тоже 64 бит.

Цитата

конечно же существует


а как его тогда собрать?
killer8080
Цитата (Bolik @ 18.03.2015 - 22:21)
поставил я себе 64 битный апач, такой же PHP. phpinfo() пишет тоже x64, но PHP_MAX_INT такой же, как и на 32 бит... в чем проблема?

значит не 64-х битная версия PHP у тебя
Invis1ble
Цитата (Bolik @ 19.03.2015 - 00:57)
а как его тогда собрать?

я качал какую-то неофициальную сборку еще во времена 5.4
самому - компилятором из исходников, надо полагать

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Bolik
апач я скачал отсюда: https://www.apachelounge.com/download/win64/
php взял тут: http://windows.php.net/download/ (VC11 x64 Thread Safe (2015-Feb-19 01:45:29)) версия 5.6.6
винда тоже 64 бит.
стоит Microsoft Visual C++ 2012 (x64)
настроил все как сказано в мануалах, добавил в PATH адрес к php.exe. апач подгружает пых.
phpinfo() выдает:
Compiler MSVC11 (Visual C++ 2012)
Architecture x64
Apache Version Apache/2.4.12 (Win64) PHP/5.6.6
SERVER_SOFTWARE Apache/2.4.12 (Win64) PHP/5.6.6

но PHP_INT_MAX все равно 2147483647

может я что-то забыл?
Игорь_Vasinsky
Bolik
тебе какая разница ? вот именно тебе?

апач работает? php обрабатывает код?

и всё.

https://toster.ru/q/48966

чем тебе 2147483647 не устраивает то? маловато?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Bolik
я бы и не парился, если бы не было очень нужно) 2147483647 не устраивает, нужно намного больше) можно конечно написать костылей, но это же сами понимаете, только костыли...

Игорь_Vasinsky спасибо за линк, я подобную инфу уже видел, потому и написал в теме, что php 64 бит на винде скорее всего миф smile.gif
sergeiss
Цитата (Bolik @ 18.03.2015 - 23:21)
мне по работе приходится работать с огромными файлами и вот недавно столкнулся с проблемой, что fseek не работает с файлами больше, чем 2 гб

А что за задача? По-другому никак нельзя решить, только fseek использовать?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Bolik
нужно через апи выгружать огромные файлы (суммарный объем где-то полтора терабайта) небольшими пакетами (макс. 10000 строк). к сожалению при таких объемах обрыв соединения обычное дело и чтоб не начинать аплоад по-новой, нужно запоминать позицию поинтера и продолжнать закачку с места обрыва. если выкачано больше 2 гигов, то fseek уже не сможет переместить позицию курсора на место обрыва...

может есть какие-то альтернативы, о которых я не подозреваю?
FatCat
Цитата (Bolik @ 18.03.2015 - 22:21)
недавно столкнулся с проблемой, что fseek не работает с файлами больше, чем 2 гб.

Странно мне это.
У меня W7/32, денвер. Файл базы Пастухова (16 гигов под рар-ом, сколько сам файл весил не помню) нормально распарсил и залил в БД все ключи.

_____________
Бесплатному сыру в дырки не заглядывают...
Bolik
да файл-то передается без проблем, тут ограничений нет. читай по строкам сколько влезет. тут проблема немного в другом wink.gif
waldicom
Цитата (Bolik @ 19.03.2015 - 12:47)
нужно через апи выгружать огромные файлы (суммарный объем где-то полтора терабайта) небольшими пакетами (макс. 10000 строк). к сожалению при таких объемах обрыв соединения обычное дело и чтоб не начинать аплоад по-новой, нужно запоминать позицию поинтера и продолжнать закачку с места обрыва. если выкачано больше 2 гигов, то fseek уже не сможет переместить позицию курсора на место обрыва...

может есть какие-то альтернативы, о которых я не подозреваю?

Может переложить закачку файлов на веб сервер. Т.е. настроить сервер так, чтобы он поддерживал докачку. Тогда не надо запоминать ничего.

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
killer8080
Цитата (Bolik @ 19.03.2015 - 14:47)
может есть какие-то альтернативы, о которых я не подозреваю?

есть конечно, нужно вообще отказаться от этой затеи. Отдавать файлы через PHP это очень плохо, отдавать огромные файлы, об этом даже думать нельзя smile.gif
Отдавайте через апи ссылку на файл, если нужно контролировать права доступа на скачивание через PHP, то есть X-Accel-Redirect для nginx, и X-Sendfile для апача. Вот например
http://www.opennet.ru/base/net/nginx_x_acc...direct.txt.html
Кроме того для nginx есть модуль secure link, позволяющий генерировать ссылки с привязкой по ip, времени и другим параметрам
http://nginx.org/ru/docs/http/ngx_http_sec...ink_module.html

а уж докачка там поддерживается из коробки, и не нужно изобретать велосипед, выбирай что нравится smile.gif
Bolik
спасибо за совет, почитаю.

но насколько я понял, в статьях идет речь о скачивании (download), а мне нужен upload. апи тоже не наш и менять там ничего нельзя. т.е. я клиенту отсылаю все и уж как там он сервер конфигурирует я знать не могу.

клиент файлы не забирает даже, а именно я их туда заливаю через HTTP POST

Цитата

Отдавать файлы через PHP это очень плохо, отдавать огромные файлы, об этом даже думать нельзя


почему?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.