Случается, когда вы пытаетесь получить доступ к массиву с помощью ключа, который не существует в массиве.
Типичным примером для уведомления Undefined Index
будет ( demo )
$data = array('foo' => '42', 'bar');
echo $data['spinach'];
echo $data[1];
Оба spinach
и 1
не существуют в массив, вызывающий запуск E_NOTICE
.
Решение состоит в том, чтобы убедиться, что индекс или смещение существуют до доступа к этому индексу. Это может означать, что вам необходимо исправить ошибку в вашей программе, чтобы убедиться, что эти индексы существуют, когда вы ожидаете их. Или это может означать, что вам нужно проверить, существуют ли индексы с помощью array_key_exists
или isset
:
$data = array('foo' => '42', 'bar');
if (array_key_exists('spinach', $data)) {
echo $data['spinach'];
}
else {
echo 'No key spinach in array';
}
Если у вас есть код например:
, тогда $_POST['message']
не будет установлена, когда эта страница будет загружена первой, и вы получите указанную выше ошибку. Только когда форма будет отправлена и этот код будет запущен во второй раз, будет существовать индекс массива. Вы обычно проверяете это с помощью:
if ($_POST) .. // if the $_POST array is not empty
// or
if ($_SERVER['REQUEST_METHOD'] == 'POST') .. // page was requested with POST
Вопросы, относящиеся:
Существуют несколько:
Теперь я не использовал все их, но я использовал или исследовал большинство их.
GridGain и GigaSpaces более центрируются [приблизительно 1 116] грид-вычисления , чем кэширование и (по моему скромному мнению) подходящие лучше всего для вычисления сеток, чем сетки данных (см. , это объяснение вычисляет по сравнению с сетками данных ). Я нахожу, что GigaSpaces действительно интересная технология, и он имеет несколько вариантов лицензирования, включая бесплатную версию и бесплатную полную версию для стартапов.
Когерентность и Терракота пытаются рассматривать кэши как [1 118] Карты , который является довольно естественной абстракцией. Я использовал Когерентность много, и это - превосходный высокоэффективный продукт, но не дешевое. Терракота я менее знаком с. Документация для Когерентности, я время от времени нахожу немного недостатка, но это действительно - мощный продукт.
OSCache я, прежде всего, использовал в качестве средства сокращения использования памяти и фрагментации в веб-приложениях Java, поскольку это имеет довольно аккуратный тег JSP. Если Вы когда-либо смотрели на скомпилированный JSPs, Вы будете видеть, что они делают много Конкатенаций строк. Этот тег позволяет Вам эффективно кэшировать результаты сегмента кода JSP и HTML в единственную Строку, которая может чрезвычайно улучшить производительность в некоторых случаях.
EHCache является легким решением для кэширования, которое я также использовал в веб-приложениях. Никогда как распределенный кэш, хотя, но это может сделать это. Я склонен просматривать его как быстрое и грязное решение, но это - возможно, моя предвзятость.
memcached особенно prevelent в мире PHP (и используется такими сайтами как Facebook). Это - действительно легкое и легкое решение и имеет преимущество, которое это не выполняет в том же процессе, и у Вас будут возможно лучшие опции совместимости с другими технологическими стеками, если это будет важно для Вас.
Можно хотеть проверить Hazelcast также. Hazelcast является транзакционным открытым исходным кодом, распределял/делил реализацию очереди, темы, карты, набора, списка, блокировки и сервиса исполнителя. Супер легко работать с; просто добавьте hazelcast.jar в свой путь к классу и начните кодировать. Почти никакая конфигурация не требуется.
, Если Вы интересуетесь выполнением Ваших Выполнимых, Вызываемых задач распределенным способом, затем, проверьте Распределенную Сервисную документацию Исполнителя в http://code.google.com/docreader/#p=hazelcast
, Hazelcast выпущен в соответствии с лицензией Apache, и поддержка корпоративного класса также доступна.
Я думаю, что сводка @cletus довольно хороша. Я действительно хотел упомянуть, что Терракота обеспечивает намного больше, чем просто распределенный кэш в форме карты. Это кластеризирует "кучу" Java и примитивы синхронизации, превращая параллельную программу Java в распределенную программу Java. Можно сделать кэширование с ним (включая использование распределенных версий кэша с открытым исходным кодом, освобождает), или набор другого материала.
Для распределения работы, существуют, некоторые дополнительные освобождают записанный сверху Терракоты, в особенности tim-каналы (для сообщений) и tim-masterworker (для распределения стиля Основного Рабочего) являются большими абстракциями сверху Терракоты. Эта библиотека находится на Терракотовом Штамповочном прессе:
Эта недавно добавленная страница может добавить немного дополнительной информации по сравнению с некоторыми другими потенциальными технологиями передачи данных:
Если Вы хотите пойти немного низшего уровня, существует JGroups, который предоставляет Вам самые основы кластеризирующихся процессов Java.
Другой, которого можно добавить к списку, Appistry CloudIQ. Это - распределенная вычислительная среда. Это доступно как бесплатная загрузка до 5 машин. Это включает распределение нагрузки, а также автоматический сбой работы в случае отказа оборудования среди других функций.
Для грид-вычислений Вы могли также рассмотреть Ледяная Сетка или DataSynapse GridServer. Они оба обеспечивают очень эффективные механизмы для распределительных задач и обеспечивают, заменяют и дублирование.
Я думаю, что Ваш вопрос был интерпретирован по-разному, Вы спрашиваете о библиотеке, которой можно пользоваться для "кластеризации, включают" приложение.
, В то время как часть ранее названного освобождения может помочь обеспечить определенную кластерную функциональность, такую как распределенное кэширование, более стандартный способ включить управление рабочей нагрузкой с помощью контейнера J2EE.
By, настраивающий кластеризованный контейнерный экземпляр, это позволяет Вам использовать функции HA и управление рабочей нагрузкой, кластеризация почти прозрачна на прикладном уровне. Я говорю почти, потому что при записи приложений, которые будут кластеризованными, необходимо быть осторожными, как Вы управляете состоянием, например, при реализации своего рода кэша, необходимо было бы копировать состояние кэша через каждую машину.
А хорошее стартовое место состояло бы в том, чтобы загрузить glassfish и попытаться установить кластеризованный экземпляр glassfish.
Hope, которая помогает.
Karl