Задать вопрос
@leha78

Как оптимизировать данный код?

Есть скрипт, который делает следующее.

В БД хранится ссылка на страницу форума, пароль, логин, дата последнего обновления. Крон каждые 5 минут запускает страницу. На странице выполняется следующее:

Вытаскивает данные с БД (только те, у которых с момента последнего обновления прошло больше часа). Заходит на форум (Ip Board), логинится, удаляет предыдущее сообщение, добавляет новое.

Проблема вот в чем. Если за раз с БД вытаскивается 1 тема, то все проходит успешно. Если за раз вытаскиваются более 2 тем, то скрипт добавляет сообщение только в первой теме, а остальные пропускает, либо у второй темы только успевает удалить предыдущий пост и на этом скрипт останавливается.

Обычно на одну тему уходит 5-6 секунд.
  • Вопрос задан
  • 182 просмотра
Подписаться 2 Оценить 3 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@remzalp
Программер чего попало на чем попало
1. Логиниться для каждого поста смысл нет. Блок с авторизацией вынесите выше сразу после if ($postsToUp), до foreach
2. Для отладки имеет смысл сохранять полученные страницы, плюс желательно со временем, когда именно получена.
3. Все телодвижения с curl вынести в отдельную функцию, читабельность резко подскочит
4. Забор из закрывающих фигурных скобок намекает, что слишком много в одну функцию запихали, уже пора разбивать на отделньые.

Возможно ошибка происходит со стороны сервера, так что сохраняйте все страницы и смотрите, после чего перестало работать. Обработку ошибок в принципе не вижу. Единственное место, где что-то может пойти не так - if (!empty($cookies['member_id'])) - если куки не найдены, то молча завершает работу. Пусть хотя бы скажет - почему
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽