Давайте еще раз поясню, может будет понятнее...
borro, смотрите: у вас скрипт на php. Допустим, в нем нет никаких циклов, а реализована простейшая логика - только один запрос и одно условие. Алгоритм его работы такой: после того, как будет сделан запрос и получен ответ от базы, условие определяет, есть ли указанный файл на диске и, если есть - удалить его. Все. Вы запускаете этот скрипт, он делает запрос в базу, выбирает из нее запись №1, возвращает ее, условие срабатывает, файл удаляется и скрипт завершает работу. При повторном запуске произойдет то же самое, будет сделан запрос в базу, выбрана запись №1, но файл не будет удален, т.к. его нет.
Ок, теперь наша задача - заставить скрипт пройтись по всей базе. Что мы делаем? Мы усложняем алгоритм работы: сначала делаем запрос в базу и спрашиваем у нее, сколько записей содержится в нужной нам таблице. Затем создаем цикл, в котором будет находится наше условие - запрос в базу и удаление файла. Таким образом мы получаем следующий алгоритм: вначале делается запрос в базу, получается общее количество записей в ней, далее создается цикл, внутри которого идет проход по каждой записи и удаление файлов, если есть. Все красиво, все работает как надо.
Но только когда в тестовой базе 5-10 записей. Но вот на боевом сайте таких записей около миллиона и ограничение на работу php в 30 секунд, а расчетное время работы вашего скрипта с этой базой - 15 минут. Какой может быть выход?
Для этого делаем JS, который с некоторой периодичностью перезапускает php, который обрабатывает по одной записи. То есть в php мы удаляем цикл и делаем его на JS. Теперь имеем такой алгоритм: JS запускается и дает команду php вернуть количество строк в базе. PHP задачу выполняет, делая запрос и передавая в JS количество строк. Далее JS запускает цикл, количество интераций которого равно количеству полученных от базы строк. Первый запрос - в php передается номер, он его получает, на его основании понимает, какую строку запрашивать, запрашивает эту строку, выполняет условие и завершает работу. Затем JS шлет новый запрос, с новым номером, цикл повторяется. Все работает, все красиво, но теперь ваш скрипт выполняется 30 минут (зато выполняется!).
Вы, как разработчик, думаете о том, как же можно его оптимизировать. Вы понимаете, что время между запросом JS и временем, когда он придет в PHP (ну образно) всегда разное и зависит от очень многих параметров - загруженности канала вашего провайдера, наводками в витой паре, а то и в телефонной линии (диалап), загруженностью сервера и канала хостера и т.д. Ставку на это делать нельзя, хотя и можно примерно посчитать, сколько времени в среднем затрачивается на передачу пакета от страницы к серверу. Вы пойдете другим путем.
Вы замеряете время работы от старта php до завершения. Если быть точным - время с момента запроса в базу и завершения работы условия. Это время будет равно 0.0..сколько то долей секунды. Вы понимаете, что сделав в цикле JS интервал в 2 секунды, вы тем самым тратите впустую массу серверного времени. Вы расчитываете, что с момента получения команды PHP мог бы обработать 200 таких запросов вместо одного. Вы пишите цикл в php. Теперь алгоритм такой: JS запускается и дает команду php вернуть количество строк в базе. PHP задачу выполняет, делая запрос и передавая в JS количество строк. Далее JS запускает цикл, количество интераций которого равно количеству полученных от базы строк. Первый запрос - в php передается номер, он его получает, на его основании понимает, какую строку запрашивать. На этом этапе в переменную запоминается микротайм (старт). Делается запрос строки в базу, выполняет условие и скрипт завершает завершает работу. Регистрируется вторая временная метка и делается расчет времени, затраченного на выполнение скрипта. Это время можно передать JS, который получит его и поймет, сколько запросов можно выполнить за одну интерацию. Затем JS шлет новый запрос, с новым номером строки и количеством интераций, которое разрешается выполнить PHP. Теперь ваш скрипт отработает меньше минуты, но больше 30 сек, чего мы и добивались.
Можно оптимизировать еще, вычисляя при каждом запросе среднее время работы скрипта и корректируя число одновременных запросов в цикле в php. Теперь понятно?
Уффф... осилил. Копирайтер никому не нужен? )