Проблема с автоматизацией

Ответить
DmitrYsOne
Сообщения: 24
Зарегистрирован: 12 ноя 2019, 20:32
Имя: Дмитрий
Откуда: Россия Сургут

Проблема с автоматизацией

Сообщение DmitrYsOne »

При использовании автоматизации Сущность - выполнить php скрипт, триггеры - редактирование и добавление записи очень сильно падает производительность системы.

Как воспроизвести:
Используется автоматизация "Сущность - выполнить php скрипт", с триггерами - редактирование и добавление записи.
Внутри используется код, чтобы обойти ограничение, описанное тут

[245] - поле текущей записи с типом "Многоуровневый список сущностей"
[246] - поле текущей записи с типом "Многоуровневый список сущностей"
У обоих сущностей один родитель

field_289 - поле текущей записи с типом "Сущность"
field_290 - поле текущей записи с типом "Сущность"
field_295 - поле текущей записи с типом "Выпадающий список"

Сам код:

Код: Выделить всё

$db = db_query("SELECT field_256 FROM app_entity_26 WHERE id = ".[245]);
$db = db_fetch_array($db);

$data = array(
  'field_289' => [245],
  'field_290' => [246],
  'field_295' => $db['field_256']
);

$params = array(
  'key' => '***',  
  'username' => '***',
  'password' => '***',
  'action' => 'update',
  'entity_id' => 28,
  'data' => $data,
  'update_by_field' => ['id'=>[id]],
);
						                                    
$ch = curl_init('https://***/api/rest.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);
После того, как данная автоматизация отработала первый раз падает производительность системы. Если я правильно понял - сильно увеличивается нагрузка на процессор процессом php-fpm при переходах на любые страницы системы. Ошибок в логах при этом нет. Если снять галочку "Активный" с автоматизации то снова всё работает без нареканий.

UPD: Решил проблему заменив вызов API на конструкцию items::update_by_id($entity_id, $item_id, $data) с этим исправлением
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Проблема с автоматизацией

Сообщение Fait »

Лучше напрямую не указывать [245] и [id].
В таком виде не срабатывает.
Лучше в начале кода присвоить сначала переменным значения этих полей, и уже потом эти переменные использовать в коде и запросах.

Попробуйте)
Ответить