Intereting Posts
fullcalendar: есть способ вызвать dayRender только после того, как я загружу свои события через функцию событий PHP: простой HTML DOM Parser – несколько атрибутов в find ()? Неверный вывод PHP date () на сервере Wamp Атрибуты проверки Laravel «хорошие имена» Окончательное решение для использования regex для удаления вложенных тэгов html того же типа? Предел загрузки документов Невозможно сохранить данные из одной таблицы в другую таблицу AngularJS 'Невозможно прочитать свойство' then 'of undefined' Как выполнять несколько запросов Guzzle одновременно? Предупреждение: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, заданный массив Тип поля Symfony 2 Entity с выбором и / или добавлением нового Php form проверяется, когда значение флажка в массиве mysql-запроса? Автоматизировать разрешение Entrust с доступом к параметрам имени маршрута и проверить разрешение пользователя Загрузите верхний и нижний колонтитулы из модуля в Laravel Функциональный тестовый сервер Symfony2 с параметром SERVER_NAME

PHP: постоянное значение переменной

Я должен прочитать файл и сделать некоторые вычисления, чем сохранить результат этого вычисления внутри переменной.

Мне просто нужно сделать это один раз. В Java + Servlet я могу сделать это, используя контейнер сервлета и, например, шаблон singleton.

Я знаю, что в PHP я не могу так себя вести. Каков лучший способ сделать это? Сохранить вычисления (или передать данные) в БД?

Нет, он не будет работать с Java Servlets. Вам придется найти обходной путь.

Во-первых, я предполагаю, что использование $ _SESSION, $ _COOKIE или $ _REQUEST в общем случае нецелесообразно для вас, так как вы хотите сохранить состояние на сервер (или на приложение), а не на «сеанс пользователя».

Использование базы данных звучит практически в вашем случае. В обычной разработке приложений это будет наиболее распространенное решение.

Также вы можете сделать что-то подобное, используя возможности сериализации PHP:

<?php $resultfile = 'result.dat'; if(!file_exists($resultfile)) { $result = compute_result('foo bar'); file_put_contents($resultfile, serialize($result)); } else { $result = unserialize(file_get_contents($resultfile)); } 

Использование попытки serialize() PHP особенно целесообразно, когда

  • Вы находитесь в среде только PHP
  • $result – сложный тип данных, но вы не хотите создавать структуру базы данных и отображать $ result тоже

Если вы не находитесь в среде только PHP, вы можете предпочесть другие форматы сериализации как JSON или XML.

Также результат сериализации может быть сохранен как строка в базе данных, а не в файле. Сохранение его в базе данных вместо файла сделает приложение более масштабируемым, так как результат будет доступен для всех серверов, которые обращаются к одной и той же базе данных (кластеру).

Короче: я бы предложил использовать базу данных, возможно, в сочетании с сериализацией.