Согласно многим источникам, register_globals (глобальные переменные, который является) должен быть, отключает в Вашем php.ini. Должен я писать определить () в моем коде и использовать константы, если глобальные переменные отключены? Они даже связаны?
Распределенная реализация, такая как Hadoop, не является хорошей пригодностью для обработки 5 ГБ XML
Если у вас было много файлов 5 ГБ, то вы можете использовать Hadoop для распространения расщепления. Вы также можете использовать его для объединения результатов в файлах и хранить результаты в формате для быстрого запроса для использования вашего веб-интерфейса, поскольку упомянуто другие ответы.
-121--3595077-Они связаны с тем, что у них есть глобальный объем, но константы должны не изменяться после определения, в отличие от глобальных переменных, которые страница может изменять, как она идет. Так что просто переключение на использование определения () вместо глобального не помогут.
Лучше, если вы восстанавливаете ваши методы, чтобы принимать переменные в качестве параметров и полагаться на это, чтобы пройти переменные вокруг.
Несколько вещей здесь.
Во-первых, register_globals, которые вы отключаете в своем php.ini, относятся к старой функции PHP, где любая переменная, отправленная через строку запроса (GET) или FORM (GET / POST), будет преобразована в глобальную переменную PHP. Это функциональность, которая (и должна быть) отключена при отключении register_globals. Даже с этим выкл, вы все равно можете определить глобальные переменные в вашем приложении.
В общем условиях программирования глобальные переменные (не регистрируются PHP Register_globals), считаются «плохими», потому что когда вы столкнулись с одним в качестве программиста, вы не имеете представлению, какие другие части приложения могут быть использованы или изменять его, или какого эффекта изменения в этом глобальном. Кроме того, если вы определяете новую глобальную переменную, есть вероятность, что вы собираетесь перезаписать существующую переменную, на которой кто-то еще опирается. Когда переменные определяются локально (в одной функции или на других языках один блок) вы можете изучить локальную область и обычно определить, какое изменение этой переменной будет делать.
Константы, с другой стороны, никогда не меняются. Вы определяете их один раз, и они остаются определенными, и никто не может их изменить. Вот почему глобальные константы считаются «менее плохими», чем глобальные переменные.
Константы, однажды определенные, не могут быть изменены.
Не используйте константы в качестве переменных. Если необходимо использовать переменные внутри функций, передайте их в саму функцию. Используйте все так, как это было задумано. Переменные - это переменная , а константы - это константа .
Некоторые постоянные примеры:
<?php
// Certainly constant
define('MINUTES_PER_HOUR', 60);
define('DOZEN', 12);
// Constant, but specific to this application
define('GREETING', 'Dear %s');
define('TIMEOUT', 30);
// Configurable, but constant for this installation
define('DATABASE', 'mydb');
define('IMAGES_DIRECTORY', '/tmp/images');
// Not constant, or some other reason why can't be constant
$user = $_POST['userid'];
$days_of_week = array('Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su');
?>
Похоже, вам нужна старая добрая база данных. Не так модно, как карта/сокращение, но часто достаточно для небольших рабочих мест, как это. В зависимости от того, насколько гибкой должна быть фильтрация, можно либо просто импортировать файл 5GB в базу данных SQL, либо реализовать собственную схему индексирования самостоятельно, либо сохранив записи в разных файлах, либо сохранив все в памяти в гигантском хэш-столе, либо что-либо подходящее для ваших потребностей.
-121--3595079-Настоятельно рекомендую вам прочитать «Математику для программистов» Стива Йегге .
Если вы ищете книги, я рекомендую конкретную математику и Искусство компьютерного программирования .
Если вы хотите испытать некоторые проблемы, ознакомьтесь с Project Euler .
Не унывайте от сложных проблем. Это только через преодоление проблем, которые вы будете расти. Сообщество здесь вполне готово оказать вам помощь и подтолкнуть, когда вы достигнете блокпоста.
Давайте также не будем забывать знаменитую цитату:
Каковы бы ни были ваши трудности в математике, я могу заверить вас, что мои намного величий.- Альберт Эйнштейн
Моя цель - стать сертифицированным и опытным программистом Java к концу года.
Наконец, только способ стать хорошо опытным - это написать код, и его много.
-121--2443225-Попробуйте выполнить этот простой тест:
fileA.php:
<?php
define('SOMEVAL', 2);
?>
fileB.php:
<?php
if(defined('SOMEVAL')) echo SOMEVAL;
else echo "SOMEVAL does not exists\n";
include 'fileA.php';
if(defined('SOMEVAL')) echo 'SOMEVAL='.SOMEVAL;
else echo "SOMEVAL does not exists\n";
?>
Затем запустите fileB.php, и вы увидите, что прежде чем включить fileA.php, SOMEVAL не определен. Это значит, что прежде чем что-либо определить, он не будет виден сценарию.
Глобальные переменные не являются постоянными (вы можете изменить значение глобальной переменной, но вы можете определить только постоянную один раз).
Константы не всегда глобальные (вы можете объявить константу в классе).
Кроме того, глобальные переменные могут быть любым типом: скаляр, массив или объект. Константы могут быть только скалярами.
Я не собираюсь говорить, либо константы, ни глотали не являются хорошими или плохими. При использовании соответствующим образом они оба имеют полезное использование. Существуют вопросы безопасности вокруг функции Register_globals
, которые отдельно от более общего использования глобалей.