>есть страница состаящая из нескольких фреймов, в верхнем водятся sql запросы в
>среднем выводится результат работы программы, в нижнем выводятся ошибки (если будут).
HTTP протокол такое не позволяет делать. Используй три разных скрипта, для каждого фрейма свой, или еще лучше не используй фреймы, а сделай табличную разбивку.
Чтобы каждый раз не дергать SQL промежуточные значения можешь кешировать в файл.
Т.е. form1.cgi, form2.cgi, form3.cgi - три скрипта для генерации фреймов.
при запуске каждый скрипт определяет унакальный идентификатор сессии пользователя (через куку, mod_uniq_sesion и т.д. как удобно, хоть по IP).
1. Далее проверяет наличия файла с кэшем, если файла нет:
- если ли лок файл ? если есть переходим к 2.
- генериуем лок файл
- генерируем из SQL содержимое файла кэша
- удяляем лок файл.
2. Сущетсвует ли лок файл ? если да то ждем в цикле, когда он исченет.
- Как только лока нет, читаем сожержимое кэша.
Плюс нужно отследить ситуацию мертвого лок файла, когда лок есть, а процесс умер так его и не удалив.