Загрузка PHP-скрипта вне Zend Framework перед загрузкой - PullRequest
0 голосов
/ 31 декабря 2011

Мне нужно запустить php-скрипт один раз, прежде чем мое приложение Zend Framework загрузится и запустится.Теперь это работает, вызывая этот начальный скрипт в моем /public/index.php, однако скрипт также запускается для всех последующих запросов страницы Zend Framework.Мне нужно, чтобы этот скрипт запускался только один раз при первоначальном запросе, а не снова, когда через ajax загружаются дополнительные страницы.

Первоначально я пытался установить некоторые php-константы в файле /public/index.php следующим образом:

if (!fined ('SOME_VAR')) require_once 'path / to / script/to/run/once.php ';define ('SOME_VAR', '1);

Однако, когда через ajax загружается другая страница, даже если я определил SOME_VAR, она не сохраняется и остается такой, как определено, и скрипт выполняетсяснова.

Я использую Zend Framework 1.11, Apache (Xampp).

Выполнение этого скрипта ПОСЛЕ того, как Zend был загружен и запущен (внутри Zend Framework) не вариант.

Ответы [ 2 ]

1 голос
/ 31 декабря 2011

Константы не работают, потому что они существуют только на время запроса.

Похоже, вы хотите выяснить, является ли текущий запрос обычным или запросом XmlHttpRequest (AJAX).

Вы можете попробовать что-то вроде этого в верхней части вашего index.php:

<?php
define('IS_AJAX_REQUEST', isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');

if (! IS_AJAX_REQUEST){
    // run your code.
}

Если вы используете сеансы, вы также можете просто установить флаг в сеансе после запуска специального кода и проверить это.

1 голос
/ 31 декабря 2011

Согласно документации Zend Framework :

Однако, если необходима пользовательская инициализация, у вас есть два варианта. Во-первых, вы можете написать методы с префиксом _init для указания дискретного кода для начальной загрузки. Эти методы будут вызваны bootstrap (), а также могут быть вызваны так, как если бы они были открытыми методами: bootstrap (). Они должны принять необязательный массив опций. Если ваш метод ресурса возвращает значение, оно будет сохранено в контейнере в начальной загрузке. Это может быть полезно, когда разные ресурсы должны взаимодействовать (например, один ресурс внедряется в другой). Затем метод getResource () можно использовать для получения этих значений.

Другим вариантом является использование плагинов ресурсов. Ресурсные плагины - это объекты, которые выполняют определенные инициализации и могут быть указаны:

  • При создании экземпляра объекта Zend_Application
  • Во время инициализации объекта начальной загрузки
  • Путем явного включения их через вызовы методов к объекту начальной загрузки

Подключаемые модули ресурсов реализуют Zend_Application_Resource_ResourceAbstract, который просто определяет, что они позволяют вводить вызывающую функцию и параметры и что у них есть метод init ().

...