2013-09-24 3 views
0

Я не уверен, что это будет правильный форум, чтобы задать этот вопрос, или я должен опубликовать его на другом сайте обмена стеками, пожалуйста, совет.Большие размеры файлов, сгенерированные в php

Я генерация переводы файлов в PHP и переводы сохраняются как ниже

$lang['fileName_md5_hashed_word'] = 'translation in arabic' 

Массива Ланга индекс имени файла добавляется подчеркивание md5 хэшируются словами, и значение этого индекса является переводом это конкретное слово в этом конкретном файле. сгенерировать этот файл, как показано ниже:

$fh = fopen($file, 'w'); 

//create the array to be stored in the language file 
..... 
..... 

fwrite($fh, $translations) //write translations to the file, while $translations is the associative array of the words in the above mentioned format. 

Это прекрасно работает для других переводов и размер файла находится в KBS, как 70 KB, (как обычные тематические переводы, переводы админки и модули переводов), но для мобильных переводов темы, размер файла - 16 МБ (да 16 МБ :(), а количество строк этого файла - 356, меньше, чем другие файлы переводов. Я не уверен, в чем проблема и почему его размер настолько высок.

Может кто-то может посоветовать, в чем может быть проблема?

Спасибо

ответ

1

Звучит подозрительно. Файлы UTF-8 и UTF-16 могут занимать больше места, чем текстовые файлы ASCII для символов, отличных от ASCII, из-за увеличения размера байта символов, но не так много!

Есть ли способ опубликовать ссылку на файл? Я предполагаю, что вы используете операционную систему на базе Linux для некоторых моих предложений.

Вещи Попробовать

Сначала убедитесь, что он действительно 16 МБ. Предполагая, что ваш файл «translation.php»:

ls -lh translations.php 

Как долго переводятся строки? Это может быть только 356 + строк, но если многие из этих строк не возвращают возврат каретки, они могут быть очень длинными. Попробуйте добавить возврат каретки после каждого выхода и посмотреть, не изменилось ли это.

$myContent += "\n"; 

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

Вы можете попробовать отсортировать файл и обработать повторяющиеся строки. Предполагая, что ваш файл с именем «translations.php», вы можете обработать это быстро в командной строке:

sort translations.php | uniq > translations.php 

Существует также возможность вам нужно удалить «гремлинов» или скрытые управляющие символы.

preg_replace('/[\x00-\x1F\x7F]/', '', $input); 

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

+0

привет, спасибо за ответ. Почтовый файл находится здесь http://othaimmarkets.com/jobs/ar.php.zip, загрузите его и распакуйте. Вы увидите файл размером 16 МБ: P. –

+1

Теперь это очень интересно. Это всего лишь 28 Кб сжатых, но распакованных, это 16,8 Мб. Сразу после линии 93, есть немного смешного дела.Вот строка 93: $ lang ['employer-workspace_e16e3202ed4e833e30f504d17d0ab501'] = 'لم تقم بإضافة اي وظيفة حتى الآن. لإضافة وظيفة إضغط على رابط. Я вижу, что символ обратной косой черты напечатан много «\», около 16 мегабайт оборотной черты. ЛОЛ! Он заканчивается следующим: «. هناك بعض العروض المميزة عند اضافة وظائف استثنائية '; – Zahnon

+1

Я считаю, что ошибка связана с неисчерпаемой строкой в ​​вашем переводе. Вам нужно будет избегать ваших кавычек с обратной косой чертой (не 16 миллионов обратных косых черт), если вы используете их внутри другой строки.Я использовал обертку линии, чтобы увидеть обратную косую черту.Я удалил их с помощью текстового редактора.Однако, я не уверен, строка 93 читает правильно.Пожалуйста, изучите его. Вот исправленный файл: http://temp-share.com/show/f3Y68pvwn – Zahnon

Смежные вопросы