Как я могу заставить ColdFusion прекратить рендеринг страницы до завершения процесса, вызванного с <cfexecute>? - PullRequest
2 голосов
/ 04 мая 2011

Я работаю над сценарием, который создает дамп MySQL через <cfexecute>, а затем передает сценарий SQL на другой сервер.Я прибегал к проверке раз в секунду, чтобы увидеть, изменился ли размер файла, и если он не изменился за последние пять секунд, я предполагаю, что он завершен.

Это нормально для текущего приложения, но в конечном итоге я хотел бы иметь возможность импортировать сценарий SQL на второй сервер и предоставить своего рода уведомление о том, что оно завершено.

Есть ли способ отследить состояние запущенного процесса?

Если нет, можно ли выполнить полный экспорт и импорт БД только через ColdFusion?

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

На самом деле вы можете не осознавать этого, но когда вы вызываете <cfexecute> без передачи атрибута тайм-аута, по умолчанию используется тайм-аут '0'.И если вы прочитаете документы на <cfexecute>, вы увидите:

Если значение равно 0:

ColdFusion starts a process and returns immediately. ColdFusion may

, верните управление на страницу вызова до того, как какой-либо вывод программы отобразится,Чтобы обеспечить вывод результатов программы, установите значение 2 или выше.

Поэтому я бы предложил передать более высокое значение для тайм-аута, что заставит ColdFusion ожидать завершения mysqldump, прежде чем двигаться дальше.

Ссылка

2 голосов
/ 04 мая 2011

Проверьте шлюзы событий [1] на один способ справиться с асинхронными операциями.Есть шлюз Directory Watcher, который поставляется с CF в качестве примера. [2]

За исключением этого, создайте какое-то средство пакетной обработки с использованием запланированных задач CF.Добавьте задание в таблицу базы данных и запланируйте задачу, периодически извлекайте задания из таблицы и выполняйте их, сообщая о результате.Второе запланированное задание может обнаружить, что первое выполнено, и выполнить следующий шаг процесса.

[1] http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec214e3-7fa7.html [2] http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-77f7.html

...