JSON => ZP => PHP => MySQL

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 915
Реакции
2 666
Баллы
113
Иногда хочется иметь под рукой что-то вроде API по работе с базой, которое бы работало так, как я сам этого хочу.
Но, как обычно либо ничего сразу хорошего и готового нет, либо нет мозгов чтобы что-то готовое быстренько натянуть и использовать.
Так и в этот раз - основная цель отправлять обычные POST/GET запросы на какую-то страничку, а на стороне сервера чтобы данные выбирались/добавлялись/изменялись и возвращался результат в виде JSON.
Заранее хочу сказать, что C# я знаю плохо, а PHP наверно ещё хуже.
Таким образом постараюсь изложить материал, как это вижу я, а если ты что-то знаешь лучше чем я описал, или я где-то накосячил в написании материала - не стесняйся писать свои сообщеньки.

Структура всего велосипеда простая - обычная страничка index.php которая будет лежать в какой-то папке на сервере и будет обрабатывать все запросы от зенно.
Документ PHP начинается с <?php и заканчивается ?>. Не знаю важно или нет, но вначале и в конце документа стараюсь сделать так, чтобы не было пробелов, переносов строк и тп.
Первым делом объявляю константы для доступа к базе и ссылку на страничку со скриптом.

Далее выполняется такая логика - если метод запроса GET или POST вызывается статический метод указанного класса Post или Get, которые возвращают какую-то строку.
80318


Так как классы Post и Get (если будем обрабатывать другие типы запросов - создадим классы и для них) используют базу данных, то наверно дальше необходимо создать какой-то класс db, который будет работать с базой - там я буду прописывать все SQL запросы.
Также, чтобы какую-то дополнительную логику не строить в Post и Get - создам класс api, в котором и будет эта логика (будет дёргаться класс db), а уже в Post и Get будет вызываться только класс api (точнее его методы).

Класс db содержит метод для подключения к базе данных (и использует переменные, которые были определены в изначально).
Класс api занимается дёрганием класса db и формирование логики (вдруг нужно будет несколько методов дёргать).
80319

80320

80321

80322


Дальше полученный файл забрасывается на хостинг, и Зеннопостером шлются обычные GET или POST запросы, содержащие в теле JSON.
80323

80324

80325

80326

80327

80328

80330

80329

К сожалению когда пытался вставить код в тему - форум не ругался на кавычки.
Пришлось заскриншотить и добавить исходник как вложенный файл.

Надеюсь, что кому-то данная информация зайдёт, может кто-то усовершенствует и поделится исходниками.
Просто если где-то затеряется у меня среди файлов - написать без инструкции эту же схему будет не быстро (а так здесь копия останется).
 

Вложения

не получается только отправить
?action=PostUpdateTb_1
{"field_0":"654","field_1":21}
Ошибка запроса
 
не получается только отправить
?action=PostUpdateTb_1
{"field_0":"654","field_1":21}
Ошибка запроса
Может быть php чувствительный к регистру и PostUpdateTb_1 не то же что и postupdatetb_1.
Параметры нужно переписать на свои (я на коленке переводил свой рабочий проект в конспект).
84786
 
Для своих целей иcпользую django rest framework, но для этого пришлось немного подучиться. Очень удобно
 
  • Спасибо
Реакции: BAZAg и udder
Сейчас часто стали использовать Json RPC 2.0. Сам формат очень простой: метод + параметры и всё в json структуре.
Не думал перейти на него?
 
  • Спасибо
Реакции: BAZAg
Для своих целей иcпользую django rest framework, но для этого пришлось немного подучиться. Очень удобно
Примерчик подобного функционала, как в этой теме сможете набросать и объяснить как использовать на любом хостинге?

Сейчас часто стали использовать Json RPC 2.0. Сам формат очень простой: метод + параметры и всё в json структуре.
Не думал перейти на него?
Честно говоря не изучал это. Везде где что встречалось на обычный хостинг не поставишь - нужно то какие-то библиотеки дополнительно подключать то ещё чего-то. Из-за чего и решил строить проект отталкиваясь только от базовых функций php.
Проект, на базе которого был выложен этот материал работает уже несколько месяцев, держит нагрузку в 300-500 зенно-потоков, которые каждую минуту обращаются где-то 20-30 раз то post то get запросам (строилось для проксирования запросов в связке зенно - база - php - exe и обратно, что-то вроде своего сервиса рукаптча, только в качестве задач - настройки запросов и данные запросов которые нужно отправить через exe, так как Зенно всегда встречает 403 в моем случае для сайтов с которыми пытаюсь работать).

Собственно вопрос - даст ли мне django rest framework или Json RPC 2.0 прирост в производительности (смогу ли я к примеру держать не 500, а 1000 зенно-потоков 24/7) - просто хотелось бы прежде понять, стоит ли тратить неделю на изучение того, что это и как работает + потом ещё и всю свою логику на это переносить)...
 
Собственно вопрос - даст ли мне django rest framework или Json RPC 2.0 прирост в производительности (смогу ли я к примеру держать не 500, а 1000 зенно-потоков 24/7)
нет
скорость лимитирует БД, ей пофиг в каком формате ты ложишь и забираешь из нее данные
 
  • Спасибо
Реакции: BAZAg
Примерчик подобного функционала, как в этой теме сможете набросать и объяснить как использовать на любом хостинге?


Честно говоря не изучал это. Везде где что встречалось на обычный хостинг не поставишь - нужно то какие-то библиотеки дополнительно подключать то ещё чего-то. Из-за чего и решил строить проект отталкиваясь только от базовых функций php.
Проект, на базе которого был выложен этот материал работает уже несколько месяцев, держит нагрузку в 300-500 зенно-потоков, которые каждую минуту обращаются где-то 20-30 раз то post то get запросам (строилось для проксирования запросов в связке зенно - база - php - exe и обратно, что-то вроде своего сервиса рукаптча, только в качестве задач - настройки запросов и данные запросов которые нужно отправить через exe, так как Зенно всегда встречает 403 в моем случае для сайтов с которыми пытаюсь работать).

Собственно вопрос - даст ли мне django rest framework или Json RPC 2.0 прирост в производительности (смогу ли я к примеру держать не 500, а 1000 зенно-потоков 24/7) - просто хотелось бы прежде понять, стоит ли тратить неделю на изучение того, что это и как работает + потом ещё и всю свою логику на это переносить)...
Json RPC 2.0 - это обычные POST запросы с json текстом. Просто удобная структура отправки и приема. Например, такой запрос:
JSON:
Развернуть Свернуть Копировать
{"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"},
И ответ:
JSON:
Развернуть Свернуть Копировать
{"jsonrpc": "2.0", "result": 7, "id": "1"}
 
  • Спасибо
Реакции: BAZAg
Примерчик подобного функционала, как в этой теме сможете набросать и объяснить как использовать на любом хостинге?
Разворачивается на голом debian.
Стэк: Python + Django + Postgresql + Supervisor
 
  • Спасибо
Реакции: BAZAg
Json RPC 2.0 - это обычные POST запросы с json текстом. Просто удобная структура отправки и приема. Например, такой запрос:
JSON:
Развернуть Свернуть Копировать
{"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"},
И ответ:
JSON:
Развернуть Свернуть Копировать
{"jsonrpc": "2.0", "result": 7, "id": "1"}
Как это подключить, чтобы это работало?
Имеется ввиду в index.php что прописывать надо, чтобы данные сохранялись или брались с базы?

Разворачивается на голом debian.
Стэк: Python + Django + Postgresql + Supervisor
Эхх... Не потяну я всё это - сложно... Но, может быть в будущем присмотрюсь к такому варианту (не дорос видимо ещё).
 
Как это подключить, чтобы это работало?
Имеется ввиду в index.php что прописывать надо, чтобы данные сохранялись или брались с базы?


Эхх... Не потяну я всё это - сложно... Но, может быть в будущем присмотрюсь к такому варианту (не дорос видимо ещё).
https://djbook.ru/rel3.0/intro/tutorial01.html можно отсюда начать, если где то вопрётесь, могу помочь, стучите в лс
 
  • Спасибо
Реакции: BAZAg
Как это подключить, чтобы это работало?
Имеется ввиду в index.php что прописывать надо, чтобы данные сохранялись или брались с базы?
Только ручками прописать формат запрос-ответ и ручками обрабатывать json
 
  • Спасибо
Реакции: BAZAg
Только ручками прописать формат запрос-ответ и ручками обрабатывать json
Нужен хоть какой-то пример как это работает...
Допустим есть у меня хостинг php + mysql.
Создаю я там index.php.
Что именно мне туда нужно прописать, чтобы этот файл принял вот такую штуку
{"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"},
и вернул в результате
{"jsonrpc": "2.0", "result": 7, "id": "1"}

Я понимаю, что нужно вручную что-то прописать, но вот что там в index.php писать какие именно функции дёргать чтобы это заработало?
 
Эхх... Не потяну я всё это - сложно... Но, может быть в будущем присмотрюсь к такому варианту (не дорос видимо ещё).
Если нет желания новые ЯП осваивать - на .NET CORE тоже самое можно реализовать. Также любая linux VDS -> готовый docker image = профит
 
  • Спасибо
Реакции: BAZAg
Элегантное решения именно БЕЗ ЗАМОРОЧЕК! - Все что нужно - хостинг и mysql
Есть хостинг - положил в папку этот php файлик, прописал доступы к БД и все.
Все остальные решения требуют дополнительных телодвижений.
 
  • Спасибо
Реакции: BAZAg
Всем здравия. Вопрос к знатокам.
Нужно распарсить json сразу в msql. названия параметров json соответствуют имени столбцов.
json храниться в переменной проекта. Кто-нибудь сталкивался с подобной задачей. помогите чё-как сделать правильнее.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)