2015-10-11 4 views
0

я сделал программу, которая работает следующим образом:Script Runtime слишком долго

  1. захватывает список существующих членов из базы данных
  2. проходит через каждый членов «звено», которое указывает на ветке форума, и использует некоторые комментарии xpath для получения «даты»; эта дата относится к тому, когда это было последнее обновление
  3. затем сравнивает эту дату с тем, который хранится в элементе, чтобы узнать, требуется ли обновление для члена; если требуется обновление, он будет запускать логическое значение для запуска другого сценария

Однако, поскольку в настоящее время существует более 80 пользователей, этот сценарий занимает много времени; это число, скорее всего, будет увеличиваться с течением времени, так что это проблема, так как она никогда не заканчивает сценарий полностью (я даже установил время выполнения на 0, но это не помогло).

Я понял, что лучший способ справиться с этим - это запустить этот скрипт несколько раз в час, чтобы проверить 30 уникальных членов за раз.

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

+0

Вы woul быть лучше работает запрос в БД один ... вы бы create и event для запуска вашего запроса каждый час. –

+1

Сохраните время, когда вы в последний раз обновлялись. Это выведет №1 и ограничение №2. – chris85

+0

@ Julio, я не думаю, что смогу справиться с этим только в db, так как # 2 требует, чтобы я проверял каждый поток, который требует отладки HTML через PHP, это значение, которое я получаю от того, что говорит мне, нужно ли ему обновить @ chris да, я думаю, что дам это –

ответ

0

Я добавил новый столбец данных, известный как update_status. Это может быть отмечено как «na», «ur» или «nu» (не применимо, требуется обновление или нет обновления).

Я приурочил скрипт к проверке 30 членов, и это заняло в среднем 1 минуту 40 секунд, поэтому я каждый раз запускаю этот скрипт каждые 4 минуты, чтобы быть в безопасности.

Он только захватывает членов с update_status из 'na', поэтому он работает своим путем через членов, пока их больше не осталось, а затем, в конце концов, программа обновления.

Он отмечает членов, которые нуждаются в обновлении с помощью «ur», а члены, которые не требуют, получают отметку «nu».

Затем, когда программа обновления работает один раз в час, она проверяет только те члены, которые нуждаются в обновлениях, а затем запускает глобальное обновление, чтобы вернуть всех членов обратно в «na».

Это не идеальный ответ, но он дал мне идею для одного в будущем и теперь будет работать нормально :)

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