Как выполнить функциональность ajax (jquery) без использования внешнего файла php - PullRequest
0 голосов
/ 17 сентября 2010

Текущий сценарий:

Я использую API gmail oauth для получения писем на странице.Многие загружаются медленно, поэтому я хочу публиковать каждое электронное письмо на странице по мере его загрузки, давая пользователю возможность делать другие действия на сайте, пока электронные письма все еще загружаются.

Требуется несколько файлов

require_once 'common.php';
require_once 'Zend/Oauth/Consumer.php';
require_once 'Zend/Crypt/Rsa/Key/Private.php'; 
require_once 'Zend/Mail/Protocol/Imap.php';
require_once 'Zend/Mail/Storage/Imap.php';
require_once 'Zend/Mail.php';

и несколько функций на главной странице, которые помогают запускать php.Я знаком с использованием вызова ajax на jquery для вызова внешнего файла php.Я хотел бы иметь возможность создавать экземпляры php-кода на этой странице для работы с использованием функциональности ajax, поэтому мне не нужно беспокоиться о вызове этих необходимых файлов и функций каждый раз, когда я проверяю новое электронное письмо.Есть ли способ сделать это?

  for ($i = $storage->countMessages(); $i >= ($storage->countMessages()-30); $i-- ){ 
 { 
  echo '<li>' . $storage->getMessage($i)->subject . '</li>'; 
 }

  } 

Это функция, которую я хотел бы использовать на лету и возвращать каждый объект по одному для загрузки на экран.Я предполагаю, что мне нужно будет создать цикл for с использованием javascript, но основная проблема заключается в возможности использовать php на странице, чтобы мне не приходилось каждый раз вспоминать включения.Может быть, мне любопытно изменить область действия этих переменных, возможно, решение заключается в том, чтобы работать с Ajax с этой страницы без внешнего скрипта - я не уверен, но любая помощь будет принята.

1 Ответ

0 голосов
/ 17 сентября 2010

Во-первых, не беспокойтесь о производительности 6 включений. Это то, о чем вы начинаете беспокоиться, когда ваш сайт становится массовым. При этом использование кэша кода операции, такого как APC , может снизить затраты на производительность, включая большое количество файлов.

На ваш вопрос: каждый запрос к PHP является собственной сущностью и не может ссылаться на код, включенный в другой запрос. Ваш исходный запрос и каждый последующий запрос AJAX - это отдельные и разные запросы, которые ничего не знают друг о друге, и все они требуют, чтобы PHP загружал все файлы для загрузки электронной почты.

Я предлагаю вам взглянуть на другие способы повышения производительности. Учитывая, что загрузка электронной почты из Gmail медленная, возможно, вы могли бы исследовать использование демона (службы, которая постоянно работает в фоновом режиме на вашем сервере), которая синхронизирует электронную почту в базе данных. Ваша страница может просто получить все необходимое из базы данных, что будет намного быстрее для пользователя. Вы можете использовать AJAX для периодической проверки базы данных на наличие новых данных. Тем временем ваш демон будет выполнять тяжелую работу в фоновом режиме.

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