![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
Имею скрипт, который работает с файлом - вытаскивает из него урлы и затем выполняет функцию с этими урлами:
так вот как видите скрипт сначала берёт данные (урлы) из файла в массив, затем обрабатывает этот массив - так вот эта обработка лится долго, а так как в файле очень много урлов, то время обработки всего массива увеличивается и скрипт например у меня успевает обработать только 8 урлов из файла. Так вот как сделать так чтобы скрипт без проблем мог обработать все урлы из файла? Слышал что можно использовать AJAX, или нет? Или может ещё что? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| Wolf1994 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: 7 Всего: 29 |
Функция file () работает с удалённым файлом или локальным?
|
|||
|
||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
c локальным. размер меньше мегабайта. но суть не в долгом считывании файла а в том что функция выполняющая операции с данными из файла длится очень долго, то есть она выполняет операцию с первой строкой, затем со второй, затем с третьей. нужно как то после обработки каждой строки что-то сделть чтобы скрипт как бы начинал действовать заново а не обрабатывал все строки за раз и зависал
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
значит все проблемы в этой функции. можете дать код? мягко говоря, 8 строк даже за самый малый лимит в 30 секунд - это чересчур.
здесь уместилось бы несколько десятков тысяч операций со строками. может быть у вас там открытие урлов и их чтение, а не просто обработка? в таком случае надо каждому урлу в соответствие прописывать флаг - обработан он или нет и записывать в тот же файл с базой данных в этом случае всё гораздо проще |
|||
|
||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
да, у меня там по каждому урлу идёт POST-запрос на него. а зачем делать флаг обработан или нет? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
всё равно не пойму зачем. ну запишем мы. а потом всё равно нужно же остальные обрабатывать. или вы предлагаете записать и остановить скрипт с выводом кнопки далее, у которой будет функция старта скрипта с урла с флагом? и так каждый раз эту кнопку нажимать? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
а ты ничего не говорил о методе запуска. я имел ввиду автоматизированную систему. закинул пачку адресов, а затем запускаешь некий исполнительный скрипт. он выбирает урл, отрабатывает с ним, записывает флаг - сделал. берёт следующий. в какой-то момент скрипт перестаёт работать. в следующий раз когда запускается исполнительный скрипт, он уже не смотри на отмеченные урлы, а берёт следующий. что касается его последующего запуска, то это зависит исключительно от вкусов. можно повесить исполнение на заход пользователя, можно на планировщик задач, можно вообще хитрую схему, мол, при запуске исполнителя, если есть не отмеченные урлы, то записываем в планировщик перезапуск скрипта через минуту. |
|||
|
||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
но тут нужно кроны настраивать, а я просто хочу запустить скрипт и чтобы он сразу мне обработал файл. знаю что на AJAX можно как-то так сделать:
то есть оно не будет зависать а будет построчно читать и выводить на экран что прочло и обработало, завершать с одной строкой, останавливаться и заново запускаться уже со второй строки и т.д. а как это реализовать не знаю( Это сообщение отредактировал(а) SeregaGREY - 3.4.2010, 00:00 |
|||
|
||||
| patap |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 26 Всего: 40 |
ну как вариант, можно просто редиректить со скрипта на скрипт, тем самым прерывать работу скрипта
делаем два файла к примеру main.php и temp.php в main.php будет
файл temp.php
Это сообщение отредактировал(а) patap - 3.4.2010, 00:17 -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
||||
|
|||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
z придумал лучше, но не знаю как реализовать. вот смотрите: обрабатываем файл с урлами, вытаскиваем первый арл, обрабатываем его, затем определяем нижестоящий урл и записываем его в сессию и редиректим на другой скрипт. другой скрипт принимает то что записано в сессии и обрабатывает это, потом определяет нижестоящий урл и редиректит на первый скрипт и так до бесконечности.
так вот как сделать то что я выделил? какой функцией определить строку под строкой , которую мы знаем? ну и соответественно когда строки закончатся как это определить? |
|||
|
||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
сделал так: в конце выполнения моей функции, которая обрабатывает урл, я поставил редирект как говорили на другой скрипт с GET['id']+1 и таким образом при каждом редиректе передаётся +1 позиция в GET и скрипты бродят по строчкам вниз и обрабатывают их |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |