We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 30557
    • 11 Posts
    P.S. Вот еще... вспомнил такую вещь...
    При установке MODX установщик CMS проверяет опцию register globals и настойчиво предлагает ее отключить.
    Поэтому все вышенаписанное не будет работать, на "правильных с точки зрения установщика MODX" инсталляциях CMS.

    :-(
      • 785
      • 2,113 Posts
      Во-первых register globals к $GLOBALS никакого отношения не имеет – учите PHP, а во-вторых если в разных сниппетах используются разные вызовы SQL, то, естественно, кэшировать их не имеет смысла. Если же вызовы одинаковые, то стоит кэшировать. В коде, кстати, множество ошибок.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 897
        • 1,620 Posts
        а что если вынести код с запросом в отдельный файл, и делать require_once "этот отдельный файл" в своих маленьких сниппетах?
          "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

          Не используйте Revo для "просто сайтов". Используйте Evo

          Who can defeat the Russian bear?
          • 30557
          • 11 Posts
          Во-первых register globals к $GLOBALS никакого отношения не имеет – учите PHP
          Каюсь, php знаю плохо... Буду стараться восполнять пробелы...
          А все-таки, верно ли мне интернетом навеяло,.. что какую-то опцию надо проверять, перед тем, как регистрировать глобальную переменную?
          В коде, кстати, множество ошибок.
          Код - только иллюстрирует идею... Сама идея-то, надеюсь, правильная.
          во-вторых если в разных сниппетах используются разные вызовы SQL, то, естественно, кэшировать их не имеет смысла
          Поразмыслил.. Посчитал вызовы... В самом деле - почти все запросы на странице будут различными.
          Т.е. задача неактуальна... и реализация откладывается... А обсуждение оставляем для всеобщего обозрения...
          а что если вынести код с запросом в отдельный файл, и делать require_once "этот отдельный файл" в своих маленьких сниппетах?
          Кстати, тоже неплохая идея. Но ведь мало, просто, выполнить sql-запрос. Надо еще где-то и сохранить результат? А тут, как ни крути, когда начнешь думать, куда же сохранить результат, получится та же реализация что и обсуждалась выше...
          Заодно, раз уж затронули тему, задам вопрос знатокам MODX: Будут ли чем-нибудь отличаться вызовы сниппетов в синтаксисе [[]] и [!!] на некешируемой странице? И чем они, в принципе, отличаются? (особенно, если сниппеты с параметрами?)
          У меня есть какие-то подозрения, что MODX транслирует вызовы сниппетов типа [[]] во что-то типа required_once, а вызов типа [!!] - во что-то типа required. Может быть, гуру MODX, объяснят, что тут к чему?

          Про ускорение выполнения SQL-запросов, вспомнился еще один стандартный подход к этому вопросу, т.н. метод "пула соединений". Смысл в том, что основное время обмена данными между клиентом и сервером тратится на открытие нового сетевого соединения. И, чтоб все работало быстрее, набирается некий пул постоянно открытых клиент-серверных соединений. В нашем случае клиент - это apache+php, а сервер - mysql.
          Тема слишком богатая. Но здесь ее обсуждать нет смысла, поскольку вопрос выходит за рамки modx, и, даже, за рамки php. Отмечу только, что это непростое программирование на уровне сокетов-буферов-очередей-семафоров-асинхронной обработки. И php совершенно для этого не предназначен...
            • 785
            • 2,113 Posts
            Quote from: trash0000 at Jun 27, 2010, 07:03 PM

            А все-таки, верно ли мне интернетом навеяло,.. что какую-то опцию надо проверять, перед тем, как регистрировать глобальную переменную?
            Неверно, ничего проверять не надо.
            Quote from: trash0000 at Jun 27, 2010, 07:03 PM

            Но ведь мало, просто, выполнить sql-запрос. Надо еще где-то и сохранить результат? А тут, как ни крути, когда начнешь думать, куда же сохранить результат, получится та же реализация что и обсуждалась выше...
            Я писал же, что можно использовать include_once() и результат хранить просто в переменных. Никаких особых ухищрений для этого не требуется, только знание PHP.
            Quote from: trash0000 at Jun 27, 2010, 07:03 PM

            Будут ли чем-нибудь отличаться вызовы сниппетов в синтаксисе [[]] и [!!] на некешируемой странице? [/i]
            Ничем различаться не будут.
            Quote from: trash0000 at Jun 27, 2010, 07:03 PM

            У меня есть какие-то подозрения, что MODX транслирует вызовы сниппетов типа [[]] во что-то типа required_once, а вызов типа [!!] - во что-то типа required.
            Неверно, если интересно, смотрите исходный код MODx. Все выполняется через eval, но в разные моменты времени. Кстати, совершенно не обязательно любые подпрограммы, необходимые при генерации страницы, оформлять в виде отдельных сниппетов. И, повторю, не уверен, что генерация XML с последующим разбором в рамках генерации одной страницы – удачное решение.
            Quote from: trash0000 at Jun 27, 2010, 07:03 PM

            И, чтоб все работало быстрее, набирается некий пул постоянно открытых клиент-серверных соединений. В нашем случае клиент - это apache+php, а сервер - mysql.
            Вы слишком много читаете теорию, неверно интерпретируя выводы. Простые запросы к базе выполняются на порядок быстрее сложных, так что основное время тратится не на соединение, а на выполнение запроса (сложно представить задачу, где требуется большое количество простейших запросов, которые нельзя заменить несколькими более сложными). И на практике намного чаще «узким местом» является не MySQL, а PHP, то есть больше времени расходуется на обработку данных, а не на их получение. Проблемы возникают только на очень больших базах, содержащих миллионы записей, или при неудачной реализации запросов к базе.
              Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
              Статьи о MODx, регулярно новые публикации