Обрабатывать большие файлы .plist с CFPropertyList - PullRequest
0 голосов
/ 04 июля 2011

Я использую CFPropertyList из https://github.com/rodneyrehm/CFPropertyList для обработки содержимого, которое я добавляю с помощью PHP.

Все работало нормально, но теперь, когда все содержимое добавлено, мой файл имеет размер около 700 КБ, что невелико.но кажется достаточно большим, чтобы позволить Apache аварийно завершить работу при попытке сохранить файл.

child pid 1278 выходной сигнал Ошибка сегментации

Я вижу в CacheGrind, что много времени вмое приложение занято вызовами CFPropertyList-> import () и CFDictionary-> toXML (), так где же может быть узкое место там?

Вносю ли я сразу много изменений?Должен ли я загружать () и сохранять () между изменениями больше, чтобы избежать одновременного сохранения слишком большого количества изменений?

Любая подсказка?

Ответы [ 2 ]

1 голос
/ 04 июля 2011

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

Следующие шаги:

  • Сначала обновитесь до последней версии PHP (5.3.6)
  • Если этого больше не происходит, почувствуй себя счастливым
  • Это все еще происходит:
    • Воспроизведите проблему с помощью PHP-скрипта длиной не более 20 строк.
    • Сообщить о проблеме на bugs.php.net
0 голосов
/ 29 июля 2011

Когда вы реализуете функцию searchNode () в документе неизвестного размера, вы всегда должны использовать параметр "глубины", чтобы избежать перехода в документ и громкого вызова вашей функции в рекурсивном цикле.

Потому что это создает бесконечные циклы, которые также вызывают segfault в PHP, которые не заканчиваются фатальной ошибкой или предупреждением.

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