Продолжить выполнение после рендера - PullRequest
0 голосов
/ 17 декабря 2009

в cakephp возможно ли продолжить выполнение функции после вызова рендера? Я использую ajax, и было бы неплохо иметь возможность очистить серверную часть после рендеринга ответа на странице. Конечно, я мог бы сделать еще один вызов ajax, но я бы предпочел не делать этого ..

TNX для любых идей. Bjorsa

Ответы [ 3 ]

1 голос
/ 18 декабря 2009

Из документов CakePHP (выделено мое):

Метод render () автоматически вызывается в конце каждого запрошенного действия контроллера. Этот метод выполняет всю логику представления (используя данные, которые вы дали при использовании метода set ()), помещает представление в его макет и возвращает его конечному пользователю .

Но, если вы посмотрите на источник для AppController::render, он вернет обработанный вывод обратно в вызывающий метод. Итак, теоретически вы можете сделать что-то вроде:

$this->autoRender = false;
$outp = $this->render('myView');
// do cleanup stuff
echo $outp;
exit();

Пока у вас autoRender установлено значение false, вы должны быть хорошими. Я лично не пробовал это, но похоже, что это должно работать так, как вы хотите. Удачи!

0 голосов
/ 18 декабря 2009

В зависимости от того, что именно вы хотите сделать, вы, вероятно, должны найти лучший способ сделать это. Сказав это, это именно то, для чего Controller::afterFilter() обратный вызов .

0 голосов
/ 17 декабря 2009

Вы можете войти в файл, в котором хранятся пакетные задания, а затем использовать cronjob для выполнения оболочек CakePHP (которые являются исполняемыми скриптами, имеющими доступ к платформе). Поэтому, когда вы обрабатываете запрос Ajax, регистрируйте пакетный процесс, а затем запланируйте обработку crontask через заданный интервал.

Страница книги CakePHP по оболочкам

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...