- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день. Есть скрипт, который парсит 26 тыс. страниц. Время на выполнение скрипта - 60 секунд, изменить его никак нельзя (через саппорт - тоже). Скрипт сделан так, что выполняется цикл столько раз, сколько страниц, т.е. 26 тыс. раз. Как можно выполнить скрипт? Мне пока приходит в голову вариант, при котором мы будем разбивать цикл по 100-200 итераций руками, но сколько же тут будет ручной работы... Нет никакого другого способа выполнить скрипт?
Если парсить нужно не по крону, а из браузера - делать отдельную страничку, которая будет опрашивать этот скрипт аякс запросом.
В цикле опрашиваемого скрипта отслеживать сколько осталось до лимита. Если, скажем, 50 секунд - вернуть яваскрипту текущую позицию. А на страничке при получении ответа - вызывать новый запрос, в параметре передать текущую позицию.
Приходилось сталкиваться с чем-то подобным.
Через браузер запускался PHP-скрипт на сайте, делающий множество небольших однотипных операций, суммарное время выполнения которых превышало десятки минут.
Решение было в том, что PHP-скрипт после каждой операции проверял время своей работы и если оно превышало некоторое значение (я задавал 10 секунд), отправлял в браузер javascript, отображающий линейку прогресса и выполняющий вызов того же PHP-скрипта с указанием точки остановки.
В результате каждый раз PHP-скрипт начинал на сайте работу не с начала, а с того места, на котором остановился.
А после окончательного завершения PHP-скрипт отправлял в браузер javascript с сообщением о завершении работы.
Если парсить нужно не по крону, а из браузера - делать отдельную страничку, которая будет опрашивать этот скрипт аякс запросом.
В цикле опрашиваемого скрипта отслеживать сколько осталось до лимита. Если, скажем, 50 секунд - вернуть яваскрипту текущую позицию. А на страничке при получении ответа - вызывать новый запрос, в параметре передать текущую позицию.
Спасибо за ответ, так, наверное, и сделаю.
Приходилось сталкиваться с чем-то подобным.
Через браузер запускался PHP-скрипт на сайте, делающий множество небольших однотипных операций, суммарное время выполнения которых превышало десятки минут.
Решение было в том, что PHP-скрипт после каждой операции проверял время своей работы и если оно превышало некоторое значение (я задавал 10 секунд), отправлял в браузер javascript, отображающий линейку прогресса и выполняющий вызов того же PHP-скрипта с указанием точки остановки.
В результате каждый раз PHP-скрипт начинал на сайте работу не с начала, а с того места, на котором остановился.
А после окончательного завершения PHP-скрипт отправлял в браузер javascript с сообщением о завершении работы.
Угу, уже так и делаю. Скрипт выполняется в браузере, никаких линеек прогресса не нужно, т.к. вызывать скрипт буду я, но идею я понял, спасибо.
Измеряю время выполнения скрипта с помощью
А как нужно останавливать скрипт? Через exit()? И потом передать в браузер текущую позицию?
я делал цикл на количество операций примерно вкладывающихся в срок, а потом делал редирект на ту же страницу с другими параметрами.
script.php?i=1
делает 100 итераций и вызывает
script.php?i=101
как то так.
Hixon10, лучше сначала передать в браузер текущую позицию, а затем exit; :)
Hixon10, лучше сначала передать в браузер текущую позицию, а затем exit; :)
Это понятно :)
я делал цикл на количество операций примерно вкладывающихся в срок, а потом делал редирект на ту же страницу с другими параметрами.
script.php?i=1
делает 100 итераций и вызывает
script.php?i=101
как то так.
Спасибо за мнение.