JSON => ZP => PHP => MySQL

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
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

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

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

Вложения

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

ant

Client
Регистрация
11.06.2016
Сообщения
18
Благодарностей
3
Баллы
3
не получается только отправить
?action=PostUpdateTb_1
{"field_0":"654","field_1":21}
Ошибка запроса
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
не получается только отправить
?action=PostUpdateTb_1
{"field_0":"654","field_1":21}
Ошибка запроса
Может быть php чувствительный к регистру и PostUpdateTb_1 не то же что и postupdatetb_1.
Параметры нужно переписать на свои (я на коленке переводил свой рабочий проект в конспект).
84786
 

Saf

Client
Регистрация
24.05.2015
Сообщения
73
Благодарностей
53
Баллы
18
Для своих целей иcпользую django rest framework, но для этого пришлось немного подучиться. Очень удобно
 
  • Спасибо
Реакции: BAZAg и udder

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Сейчас часто стали использовать Json RPC 2.0. Сам формат очень простой: метод + параметры и всё в json структуре.
Не думал перейти на него?
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Для своих целей и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) - просто хотелось бы прежде понять, стоит ли тратить неделю на изучение того, что это и как работает + потом ещё и всю свою логику на это переносить)...
 

uuw

Client
Регистрация
04.06.2020
Сообщения
146
Благодарностей
54
Баллы
28
Собственно вопрос - даст ли мне django rest framework или Json RPC 2.0 прирост в производительности (смогу ли я к примеру держать не 500, а 1000 зенно-потоков 24/7)
нет
скорость лимитирует БД, ей пофиг в каком формате ты ложишь и забираешь из нее данные
 
  • Спасибо
Реакции: BAZAg

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Примерчик подобного функционала, как в этой теме сможете набросать и объяснить как использовать на любом хостинге?


Честно говоря не изучал это. Везде где что встречалось на обычный хостинг не поставишь - нужно то какие-то библиотеки дополнительно подключать то ещё чего-то. Из-за чего и решил строить проект отталкиваясь только от базовых функций 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

Saf

Client
Регистрация
24.05.2015
Сообщения
73
Благодарностей
53
Баллы
18
Примерчик подобного функционала, как в этой теме сможете набросать и объяснить как использовать на любом хостинге?
Разворачивается на голом debian.
Стэк: Python + Django + Postgresql + Supervisor
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
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
Эхх... Не потяну я всё это - сложно... Но, может быть в будущем присмотрюсь к такому варианту (не дорос видимо ещё).
 

Saf

Client
Регистрация
24.05.2015
Сообщения
73
Благодарностей
53
Баллы
18
Как это подключить, чтобы это работало?
Имеется ввиду в index.php что прописывать надо, чтобы данные сохранялись или брались с базы?


Эхх... Не потяну я всё это - сложно... Но, может быть в будущем присмотрюсь к такому варианту (не дорос видимо ещё).
https://djbook.ru/rel3.0/intro/tutorial01.html можно отсюда начать, если где то вопрётесь, могу помочь, стучите в лс
 
  • Спасибо
Реакции: BAZAg

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Как это подключить, чтобы это работало?
Имеется ввиду в index.php что прописывать надо, чтобы данные сохранялись или брались с базы?
Только ручками прописать формат запрос-ответ и ручками обрабатывать json
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Только ручками прописать формат запрос-ответ и ручками обрабатывать 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 писать какие именно функции дёргать чтобы это заработало?
 

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 228
Благодарностей
784
Баллы
113
Эхх... Не потяну я всё это - сложно... Но, может быть в будущем присмотрюсь к такому варианту (не дорос видимо ещё).
Если нет желания новые ЯП осваивать - на .NET CORE тоже самое можно реализовать. Также любая linux VDS -> готовый docker image = профит
 
  • Спасибо
Реакции: BAZAg

GreenWay

Client
Регистрация
11.05.2012
Сообщения
432
Благодарностей
139
Баллы
43
Элегантное решения именно БЕЗ ЗАМОРОЧЕК! - Все что нужно - хостинг и mysql
Есть хостинг - положил в папку этот php файлик, прописал доступы к БД и все.
Все остальные решения требуют дополнительных телодвижений.
 
  • Спасибо
Реакции: BAZAg

vedi108

Client
Регистрация
22.08.2022
Сообщения
16
Благодарностей
3
Баллы
3
Всем здравия. Вопрос к знатокам.
Нужно распарсить json сразу в msql. названия параметров json соответствуют имени столбцов.
json храниться в переменной проекта. Кто-нибудь сталкивался с подобной задачей. помогите чё-как сделать правильнее.
 

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