Александр А: боюсь, на шаред хостинге Вам и crontab из скрипта вряд ли дадут править. Кроме того, шаред — это таки прошлый век, виртаулка стоит чуть ли не дешевле.
Александр: листинги стоит заворачивать в тег <code>, так их удобнее читать. В этом, на первый взгляд, всё верно. А что в логах? В первую очередь nginx.
Немного оффтопа. Зачем нужно обязательное имя пользователя, если для регистрации используется электропочта? Это уже сам по себе достаточно уникальный идентификатор.
Александр А: регулярные задачи лучше делать через события в СУБД или менеджер очередей. Автоматическое обновление зависимостей по расписанию — очень плохая идея, потому что Вы не знаете, что сломается в очередном обновлении очередной зависимости, такие вещи нужно ручками тестировать и выкатывать.
Если быть более точным, то и тот, и другой представляют собой в первую очередь компиляторы Python в байт-код виртуальной машины Java (JVM) и Common Language Runtime соответственно.
Позвольте узнать исходную задачу. Моя интуиция подсказывает, что если Вы хотите работать с системным планировщиком из PHP, то Вы делаете что-то не так.
dtavricheskiy: если по какому-то полю таблицы в базе данных предполагается частый поиск, по нему строится индекс. Индекс представляет собой B-дерево или его производное. Поиск по такому дереву в общих чертах похож на двоичный поиск, но дерево удобнее для вставки, чем сортированный список.
Потом между таблицей со словарём и таблицей с текстами формируется связь многие-ко-многим. То есть создаётся связывающая таблица, которая содержит поле с идентификатором текста, поле с идентификатором слова и, возможно, ещё какую-то служебную информацию, вроде количества вхождений слова в текст. Идея в том, что если выбрать из связующей таблицы все записи с идентификатором искомого слова (а это будет быстро, потому что по этим идентификаторам построен индекс), мы получим список всех текстов, куда это слово входит, не выполняя при этом полнотекстового поиска. Потом эту процедуру можно повторить для остальных слов в запросе, результаты по каким-то критериям отсортировать и объединить.
И, боюсь, на этом мои теоретические знания о таком поиске исчерпываются. Попробуйте поковырять документацию и исходники Sphinx, это пример (насколько знаю, единственный) открытой реализации такого поиска.
dtavricheskiy: в смысле, по какому алгоритму? Как СУБД ищет значение в таблице или как между собой связаны таблицы? Это несколько выходит за рамки одного алгоритма.
Dark_O: а, про такую функцию не знал. Тогда, возможно, это то, что надо. Правда, AdBlock, как расширение браузера, скорее всего, делает это через вызовы API самого браузера.
Dark_O: может, конечно, я чего про AdBlock и не знаю, пользуюсь им в режиме поставил-и-забыл, но он не занимается никакой подсветкой, он просто скрывает рекламу. И делает он это просто тем, что не загружает картинки и скрипты, которые содержат рекламу.
Блокировщики рекламы работают только с URL нежелательного содержимого. Если он попадает под одну из заданных регулярок, то просто не загружается. Это не требует работы с DOM, то есть, похоже, не подходит автору вопроса.
lfoma: немножко некропостинга. Да, фрилансеры и любители страдают, а в конторах обычно есть специально обученные системные администраторы, которые по запросу разворачивают dev окружение.
123qwe: немного некропостинга :-) У строк есть ещё метод .splitlines(), который делает кошерное разделение на строки с учётом особенностей операционной системы.