Проблемы с загрузкой больших объемов данных в MySQL с использованием PHP - PullRequest
0 голосов
/ 12 октября 2009

У меня есть скрипт, который получает необработанные двоичные данные изображения через URL-запрос. Затем он берет данные и помещает их в mysql.

Довольно просто, верно? Ну, это я вставляю около 8000 приличных размеров 600x400 JPEG, и по какой-то странной причине некоторые изображения обрезаются. Может быть, часть моего скрипта, которая перебирает каждое нужное изображение, собирается быстро?

Когда я делаю прямой запрос к URL-адресу, я вижу все необработанные данные изображения, но, в конце концов, данные обрезаются в некотором роде.

Любые идеи почему?

Ответы [ 5 ]

1 голос
/ 12 октября 2009

Что-то в цепочке обрабатывает двоичные данные как строку, в частности строку с нулевым символом в стиле C? Это может привести к обрезанию первого нулевого байта ('\0').

0 голосов
/ 12 октября 2009

Если вы делаете повторные запросы к одному и тому же URL, изображение в конечном итоге загружается?

Если это так, это указывает на проблему с сетью. В вашем ядре включена поддержка больших пакетов (при условии, что Linux), что не работает корректно для многих клиентов Windows. Я видел похожую проблему с большими (1 + МБ) библиотеками javascript, обслуживаемыми с Linux-машины.

http://en.wikipedia.org/wiki/TCP_window_scale_option

http://support.microsoft.com/kb/314053

0 голосов
/ 12 октября 2009

Строковый тип данных определенно будет , а не оптимальным для хранения изображений в БД.

На самом деле я видел несколько рекомендаций, что изображение должно находиться в папке где-то в вашей файловой системе, а в БД содержится только адрес / путь к файлу.

Это - ссылка на страницу о вставке изображений.

Содержит предложение о пути к файлу и о том, что тип данных blob лучше, если изображения должны помещаться в базу данных.

Если это блоб, то обработка его как строки не будет работать.

0 голосов
/ 12 октября 2009

Правильно ли вы устанавливаете заголовки?

е:

header('Content-Length: '.strlen($imagedata));
header('Content-Type: image/png');
...
0 голосов
/ 12 октября 2009

Вы пытались просто вызвать свой скрипт, который извлекает двоичное изображение, и выгрузить его. Если вы видите изображение правильно, значит, оно не тянет, возможно, это связано со вставкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...