Кроме того, поскольку $this::
еще не обсуждался.
Только в информационных целях, начиная с PHP 5.3, когда имеешь дело с объектами, для которых создаются экземпляры, чтобы получить текущее значение области действия, в отличие от использования static::
, можно альтернативно использовать $this::
следующим образом.
class Foo
{
const NAME = 'Foo';
//Always Foo::NAME (Foo) due to self
protected static $staticName = self::NAME;
public function __construct()
{
echo $this::NAME;
}
public function getStaticName()
{
echo $this::$staticName;
}
}
class Bar extends Foo
{
const NAME = 'FooBar';
/**
* override getStaticName to output Bar::NAME
*/
public function getStaticName()
{
$this::$staticName = $this::NAME;
parent::getStaticName();
}
}
$foo = new Foo; //outputs Foo
$bar = new Bar; //outputs FooBar
$foo->getStaticName(); //outputs Foo
$bar->getStaticName(); //outputs FooBar
$foo->getStaticName(); //outputs FooBar
Использование приведенного выше кода не является обычной или рекомендуемой практикой, а просто иллюстрирует его использование и должно действовать как более "Знаете ли вы?" со ссылкой на оригинальный вопрос автора.
Он также представляет использование $object::CONSTANT
, например, echo $foo::NAME;
, в отличие от $this::NAME;
.
3-4 пользователя каждые 30 секунд - это совсем немного. Даже 300 пользователей с такой скоростью - это совсем немного.
Вы можете проверить следующие вопросы:
Вы ] также может кэшировать это, и было бы целесообразно , особенно если запрос для генерации страницы требует больших вычислительных ресурсов , но, конечно же, следует учитывать, какую задержку вы хотите получить в самом последнем контенте. отображается.
Я думаю, что вы сделали великолепно.
Если бы я делал этот проект, я бы начал с того, что у вас есть, и добавил бы событие setTimeout () для увеличения отображения минут / секунд каждую секунду.
Пользователи будут воспринимать отображение в реальном времени, и они, вероятно, никогда не будут обновлять страницу.
Опасность с обновлением только каждые 30 секунд заключается в том, что некоторые люди рефлекторно нажимают «Обновить» для " последний "каждый раз, когда они обращают на это внимание.
Также подумайте о том, чтобы отмечать что-либо со временем менее пяти минут. И цветовое кодирование при входе в систему и выходе из системы. Людям будет легче «сканировать», потому что они смогут выделять изменения, не читая весь текст.
Есть несколько разных способов имитировать отправку сервера через HTTP. Такие методы недавно получили замысловатое название: Комета .
Если конфигурация вашего сервера допускает неограниченное выполнение скриптов, вы можете использовать iframe для реализации панели и использовать частичную передачу (например, через PHP flush ()
) для создания постоянного HTTP-соединения. Такое решение должно иметь наименьшие накладные расходы, если временной интервал между последовательными сообщениями короткий. Для длительных интервалов опрос на стороне клиента предпочтительнее, так как TCP-соединение не должно поддерживаться.
Да, это не должно быть проблемой ни в малейшей степени.
При этом, если вас беспокоит количество отправляемых обратно данных, вы всегда можете отправить вызов верните простой флаг, ЕСЛИ есть новые данные, а затем перейдите к получению данных, если это так.
Но да, с таким количеством пользователей у вас не должно быть никаких проблем. Настраиваемая доска сообщений на основе RoR, которую я часто использую, использует похожую технику, чтобы увидеть, обновлялись ли потоки, пока вы ее читаете, и на нее одновременно без проблем обращаются более 100 пользователей.
That many users are not going to bring down your server.
If you are really concerned about performance, I will give you 2 advice:
Use fixed date for history data and compute the relative time on the client, it will allow you to cache the history data.
{"user":"jsampson","action":"logged out","date":"20090622T170822"}
Вы видели предварительный просмотр Google Wave ...? Для такого небольшого числа это не проблема, тем более что администраторы об этом знают. (Это не значит, что вы загружаете процессор какого-либо посетителя или мобильное подключение к Интернету.)
Сравните это с альтернативой. Если бы каждый пользователь обновлял страницу каждые 30 секунд, загружая всю страницу, объем обработки на стороне сервера и генерируемый трафик были бы намного больше, чем просто обновление «интересных частей».
Это то, для чего был создан AJAX.
Я бы сказал, что это будет в первую очередь зависеть от того, насколько дорого стоит этот запрос.
Хотя сейчас небольшое количество пользователей, будет ли так всегда?
На мой взгляд, никаких проблем. Сайты, которые работают в гораздо большем масштабе (например, Betfair), используют сотни звонков в минуту на каждого подключенного клиента. Очевидно, что у них гораздо большая аппаратная инфраструктура, но браузер с этим справляется нормально.
У меня есть сайты, которые используют меньший интервал, и они масштабируются до нескольких сотен одновременных пользователей, работающих с одного веб-сервера.
Фактически, согласно этому объяснению , круговой импорт
не будет работать так, как вы хотите: если вы раскомментируете import mod1
, второй модуль все еще не будет знать о Вселенной
.
Думаю, это вполне разумно. Если оба ваших файла нуждаются в доступе к типу определенного объекта, например Universe
, у вас есть несколько вариантов:
Universe
, возможно, передача объекта еще неизвестного типа в show_answer
нормально Universe
в отдельный модуль и сначала загрузите его. Нет, никаких проблем быть не должно. Я делаю то же самое с интервалом в 1 минуту для системы уведомлений, которую написал на портале внутренней сети моей компании. Честно говоря, любой веб-сервер должен уметь справляться с этим.
Это действительно не хуже (на самом деле, значительно лучше), чем они, скажем, обновляют свой браузер каждые 30 секунд ... Учитывая значительно меньший объем передаваемых данных, это, вероятно, будет что-то в масштабе 10-20 раз лучше, чем обновление его ... или примерно такая же пропускная способность обновления раз в 5-10 минут. : -)
Вы должны кэшировать это и обновлять кеш только каждые 30 секунд.
Как указал altCognito, веб-трафик от этого, скорее всего, не будет проблемой.
Единственное, что я проверю, это будет ли загрузка базы данных, необходимая для этого, вопрос. Т.е. если это будет подано запросом, выполнение которого требует некоторого времени, это вызовет проблемы. Если это так, я бы рекомендовал добавить кеширование данных или сохранить данные для этого в памяти вместо БД (только загрузка из БД при запуске и добавление вещей в этот список в серверной памяти как они случаются).