Здравствуйте! Привет всем!
Я вот совсем начинающий (во всех этих "тегах" что указал в вопросе). Спасибо, что ответите если. :) А нужно мне организовать сбор данных с удаленного устройства и показать графики работы его в Интернете. Частота прихода данных -
1 раз в секунду. Данных совсем немного - скажем
150 байт (если точно совсем нужно, то могу уточнить, но не более). И решил сделать немного хотя бы по уму. Чтобы минимально загружать излишними запросами своими. Сделал так - на один php скрипт приходят данные (я пока в качестве "данных" использую просто текстовые сообщения):
<?php
require './SharedMemory.php';
require './DataBase.php';
// получаем значение строки с текстом, присланного через AJAX запрос от
// веб-формы (из браузера) или же через сокет-соединение:
$comment = trim($_POST['comment']);
// сохраняем полученное в 'Shared' области памяти:
$stor = SharedMemory::getInstance();
$stor->set(0, $comment);
// также отправим полученное на БД:
$conn = DataBase::getInstance();
$conn->checkConnection();
$conn->addValue($comment);
// выдаем в ответе на этот запрос, все записанные значения из столбца БД:
echo json_encode($conn->getValue());
а через запросы к другому скрипту (из Браузера уже только) эти данные считываем:
<?php
require './SharedMemory.php';
require './DataBase.php';
// получаем значение строки с текстом, присланного через AJAX запрос:
$comment = trim($_POST['commentGett']);
// отправим полученное на БД:
if (!empty($comment))
{
$conn = DataBase::getInstance();
$conn->checkConnection();
$conn->addValue($comment);
}
// выдаем в ответе все ранее полученное (в др. скрипте) из 'Shared' области памяти:
$stor = SharedMemory::getInstance();
echo $stor->get(0);
База данных так была создана:
create database comments;
use comments;
create table comments ( comment_id int primary key not null auto_increment, comment_text varchar(1000) );
(спасибо урокам с Инета и пр. - если кто признал эту БД оттуда :).
Таким образом у меня тут:
БД с varchar(1000), приходят простые текстовые сообщения через AJAX и с разных мест (разные скрипты работают в разное время и асинхронно) и используется shared memory как "хранительница" последних записей. Теперь встал вопрос перехода на бинарные данные (150 байт всего как писал ранее). После изучений/читаний - запутался с выбором типа данных: BLOB (а какой точно?), VARCHAR (?), CHAR и пр. пр. именно для размера приходящих данных
всего 150 байт. Какой тут оптимальнее? Применять еще base64? А как насчет JSON? Может BSON тут? (не знаю пока что это и с чем его едят - может "оверхед" пойдет от него). А вдобавок ко всему, еще возник вопрос о целесообразности shared memory т.к. выяснилось (я новичок в этом деле), что есть такая вещь как "in-memory" БД. Тогда может ее тут использовать? Т.к. частота записей у меня раз в секунду и подумал (и так мне говорили), что слишком часто это. Как посоветуете тут и что можете предложить. А то немного неразбериха получилась тут и решил вот спросить. Спасибо (если нужны исходники классов "SharedMemory" и "DataBase", то могу привести их, но там ничего такого особенного нет и не привел их чтобы "перегружать" вопрос).