PHP/HTTP не без апатридов

PHP uses cookies, sessions or databases (and ORMs) in order to remember data (so they are not lost after single HTTP request). However, in Java (I mean servlets etc.) there is another solution: in brief you may choose for an object different scopes (how long it exists). Besides of session-scope or simple single HTTP-request "life" (scope), it can "live" during whole HTTP-server runtime and can be initialized at the startup of the HTTP-server.

Таким образом, данные могут передаваться между разными пользователями/сеансами, и запросы базы данных не требуются (что приводит к снижению эффективности всего веб-приложения). (Я имею в виду, что они не требуются, когда HTTP-сервер уже запущен - объект и его состояние «запомнены»).

(И я делаю все возможное, чтобы уменьшить запросы SQL, используя даже массивы PHP для часто читаемых, но фактически никогда не изменяемых данных БД).

Что мне нужно в PHP, это способ:

  1. Remember (store somewhere) data that can be changed and shared between many users, but not into DB
  2. Without using sessions (nor cookies) I want to have multiple data-informations for many requests (etc. AJAX no single, but many requests to the same URL), which of course must be stored somewhere else for some time. For instance, I want to read all data (rows) with a single SQL request, remember them for a short period in PHP, and only then, one by one row, send responses with, say, each row in seperate response into appropriate AJAX function

Кто-нибудь может дать мне несколько советов, как я могу достичь этого на PHP, желательно, самый простой способ?

0
Раньше я делал это с базой данных. Но когда у вас есть даже 50 или 100 строк для чтения из БД, ваше приложение будет работать очень медленно, когда вам нужно выполнить каждый запрос SQL для каждого запроса AJAX. Поэтому я хотел бы иметь один запрос SQL с сохраненными строками (в PHP или некоторое время на короткий период) для многих запросов AJAX, поэтому DB используется только один раз. В Java, как я уже говорил, вы можете просто использовать объект с соответствующей областью.
добавлено автор forsberg, источник
Спасибо anttir, я проверю это.
добавлено автор forsberg, источник
Использование временных файлов не является невозможным. Обычно они буферизуются операционной системой, и вы также можете использовать файловую систему tmpfs из памяти.
добавлено автор anttir, источник
У вас также есть опции для хранения объектов в памяти для ускорителей PHP (xcache, eaccelerator) или использования shmem или некоторой библиотеки поддержки для него.
добавлено автор anttir, источник
Эффективное обращение с этим видом - это буквально для базы данных.
добавлено автор Cairnarvon, источник

1 ответы

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

Это оставляет вам несколько вариантов, и все они действительно «сильные стороны» базы данных:

  1. Используйте простой уровень защиты от ключевого значения в памяти, например memcached или Redis
  2. Используйте решение noSQL с немного большей структурой (и это необходимо будет согласовать), но это все еще работает в памяти и сравнимо быстрее, чем RDB
  3. Используйте СУРБД, потому что она будет работать отлично, и количество, если трафик, который вам понадобится для сверки хорошо спроектированной схемы на умеренных аппаратных средствах, вероятно, намного выше, чем вы думаете.

НТН

1
добавлено
Ad 1. Я посмотрю на это решение ближе, спасибо. Объявление 2. Я не вижу здесь ничего другого, кроме использования этого объявления. 1? Объявление 3. Это не в моем случае. См., Проблема в том, что многие запросы SQL - и DB-сервер находится на другом физическом сервере (с некоторыми ограничениями), чем Apache/PHP. Я хочу преодолеть эту «физическую» проблему, отправив Apache/PHP только один ответ БД.
добавлено автор forsberg, источник
ОК. Не могли бы вы дать мне более конкретный пример решения дела № 2? (Сейчас это звучит несколько абстрактно).
добавлено автор forsberg, источник
# 2 подходит для использования в случаях, когда вы можете захотеть хранить данные с помощью переназначения через перезагрузки, но без привлечения вашего RDB. Однако из того, что вы сказали, вы хотите создать больше кеша данных, которые вы вытаскиваете из другого места - в этом случае работа с №1, вероятно, является вашим победителем. Просто будьте осторожны с данными, живущими в кеше, после того, как они были обновлены в базе данных, как часто вы обновляете их и т. Д. HTH.
добавлено автор jstephenson, источник
Я бы быстро отвлекся на noSQL и SQL, тему, которую легко изучить с помощью Google, но в вашем случае я предполагаю, что вы можете хранить данные, для которых реляционная целостность и т. Д. Не является существенной, и с которой вы не хотите внешний сервер RDB. То, что именно эти данные могут быть специфическими для домена.
добавлено автор jstephenson, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

dbGeeks
dbGeeks
545 участник(ов)

Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp

Разработка СУБД
Разработка СУБД
143 участник(ов)