Вопросы по PHP

12 3
DV
На сайте с 01.05.2010
Offline
644
1802

(сабж касается anton000 ;) )

Pecl stem — лыжи не едут, или как…

Беру пример из ридми:

print "English: devestating -> " . stem("devestating", STEM_ENGLISH) . "\n";
Выдаёт English: devestating -> devest

То же самое для русского языка

print "Russian: любоеслово -> " . stem("любоеслово", STEM_RUSSIAN) . "\n";
Выдаёт Russian: любоеслово -> любоеслово без изменений

UTF-8

Взгляните незамыленным взглядом.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
DV
На сайте с 01.05.2010
Offline
644
#1

Написал библиотеку, которую планирую подключить к имеющимся сайтам.

Как (где) грамотно разместить её на сервере, чтобы не создавать копий в директории каждого сайта?

Можно ли как-то запихать её в environment, чтобы не писать абсолютные пути?

IL
На сайте с 20.04.2007
Offline
435
#2
DenisVS:
Как (где) грамотно разместить её на сервере, чтобы не создавать копий в директории каждого сайта?

include_path - не? http://www.php.net/manual/ru/ini.core.php#ini.include-path

Ещё есть симлинки (ln -s) / хардлинки... на случай, если файл(ы) потребуются именно в каталоге сайта и/или, как вариант - mount bind

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
DV
На сайте с 01.05.2010
Offline
644
#3

ivan-lev, теперь будет дилемма, что меньшее зло — снижение производительности за счёт просмотра include_path, либо необходимость создавать ссылки/точки монтирования при переносе 😂

IL
На сайте с 20.04.2007
Offline
435
#4
DenisVS:
теперь будет дилемма, что меньшее зло

Ну, могу в очередной раз предложить бенчмарки погонять :D

DV
На сайте с 01.05.2010
Offline
644
#5

Вот и упёрся в ограничение.

Сравниваются два массива, вложенные foreach. Порядка нескольких тысяч элементов в каждом.

Один дёргается из формы, другой через API CMS из базы.

Вываливается с переполнением памяти PHP.

Лимиты увеличивать не предлагать, у меня и так на тестовом сервере выкручено нереально.

Оптимизация? Может быть, но мне видится, что это мёртвому припарки, т.к. массивы могут быть и больше, а на хостинге памяти куда меньше.

Нужно какое-то умное решение. Может, алгоритм сравнения другой?

[umka]
На сайте с 25.05.2008
Offline
456
#6
DenisVS:
Может, алгоритм сравнения другой?

Это ж какого размера элементы в массиве, что при нескольких тысячах не влезает в память?

Переполнение вываливается в момент "дёрганья из формы и из базы"?

Попробуйте сравнивать их частями.

Лог в помощь!
DV
На сайте с 01.05.2010
Offline
644
#7
umka:
Это ж какого размера элементы в массиве, что при нескольких тысячах не влезает в память?

Там кейворды в юникоде.

umka:
Переполнение вываливается в момент "дёрганья из формы и из базы"?

Судя по всему, при попытке print_r модулем дебага CMS.

umka:
Попробуйте сравнивать их частями.

Есть ли готовые типовые конструкции, или велосипедить?

IL
На сайте с 20.04.2007
Offline
435
#8
DenisVS:
Нужно какое-то умное решение. Может, алгоритм сравнения другой?

А что должно получиться в результате сравнения? Ну, в смысле, не сравнение ради сравнения.. нужно отличающиеся элементы найти и заменить в базе? (я к тому, возможно ли, вообще без сравнения обходиться - Replace, например.. или INSERT IGNORE.. или вставить в базу в MEMORY TABLE и UPDATE через JOIN по ключу.. )

[umka:
;11937075]Это ж какого размера элементы в массиве, что при нескольких тысячах не влезает в память?

Возможно, дело не в самих массивах, а в

DenisVS:
другой через API CMS из базы.

DenisVS, есть возможность проверить - вместо API "пустышку" использовать?

DV
На сайте с 01.05.2010
Offline
644
#9

Хотя, зря панику навёл. Отключил дебаг совсем, и стало летать.

Но вопрос всё равно интересный, потому что на хостинге с рабочими данными неизвестно, что будет.

IL
На сайте с 20.04.2007
Offline
435
#10
DenisVS:
Судя по всему, при попытке print_r модулем дебага CMS.

Ну дык.. он наверняка пытается всё это в ob_start завернуть.. =)

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий