Руководство Melbis Shop: оглавление
Запускает модуль агента на витрине магазина через точку входа
agent.php и возвращает ответ модуля.
Не требуется; создать и изменить модуль — «Прямой доступ → Разработка
→ Изменение данных» (AGENT_ENGINE_DEV_WRITE).
| Параметр | Тип | Что это |
|---|---|---|
mod |
строка | имя модуля без .php, начинается с agent_:
agent_price_audit |
[params] |
объект | значения для модуля по именам |
Значения уходят так же, как поля формы. Строка, число или да/нет
приходит модулю строкой: 5, true;
null — пустой строкой. Список таких значений приходит
массивом, пустой список не уходит вовсе. Объект и список в списке —
отказ. Все значения приходят одним сериализованным аргументом: в
манифесте объявлено post: serial, значения лежат в
$mVars['post'].
Модуль создают engine_php_add и пишут engine_php_save с
ajax_load: 1 — это флаг точки входа. Например, модуль
units/agent_hello.php с param_info
post: serial:
<?php
function AGENT_HELLO($mVars)
{
$name = $mVars['post']['name'] ?? 'world';
$text = 'Hello, '.$name;
return $text;
}
?>Вызов
{"mod": "agent_hello", "params": {"name": "Melbis"}}
ответит Hello, Melbis. Как устроены модуль, его манифест и
параметры — «Модульный скрипт».
{"mod": "agent_hello", "status": 200, "bytes": 13, "time": 47,
"file": "D:\\Melbis\\shop.example.com\\mcp\\melbis\\runs\\agent_hello.txt", "cut": false}Затем текстом — ответ модуля, до 8000 байт.
| Поле | Что это |
|---|---|
mod |
модуль |
status |
код ответа HTTP — при успехе 200 |
bytes |
размер ответа модуля |
time |
сколько шёл запрос, мс |
file |
где сохранён весь ответ; каждый запуск модуля файл перезаписывает |
cut |
ответ длиннее 8000 байт: в тексте его начало, целиком — в
file |
Если витрина ответила не кодом 200, модуль не выполнился или упал.
Отказ показывает mod, status и начало ответа
витрины, называет файл, где лежит весь ответ, и журнал витрины
core/log/melbis/front.log — туда движок пишет сообщение,
файл и строку падения. Журнал читает engine_static_load.
| Начало ответа витрины | Когда | Что делать |
|---|---|---|
NO_MODULE: there is no units/<модуль>.php |
модуля нет | сверить имя по карте, создать модуль
engine_php_add |
NO_ENTRY_POINT: set entry_point = 1 for unit <модуль> |
модуль не точка входа | сохранить его с ajax_load: 1 |
ACCESS_DENIED |
ключ сессии не подошёл: сервер магазина перезапускался или ключ старше суток | открыть сессию заново |
| другой ответ с кодом 404 | в корне сайта нет agent.php |
обновить магазин |
Отказы до запроса к витрине:
| Ответ | Когда |
|---|---|
mod is required… |
не указан модуль |
The entry point runs the modules of the agent only… |
имя модуля не начинается с agent_ |
The field [<имя>] of params takes a value or a list of values… |
в params объект или список в списке |
This store gave out no key for the entry point… |
session_connect не получил ключа: ключ хранится в APCu,
а на сервере с APCu что-то не так |
Общие отказы — «Ответы и отказы».