Код: Выделить всё
$this->task_data = serialize($this->task_data);
$command = $this->getDbConnection()->createCommand("INSERT INTO tasks_queue (worker, priority, task_name, task_group, task_data, task_id, notice, create_time) VALUES (:worker, :priority, :task_name, :task_group, :task_data, :task_id, :notice, NOW())");
$command->bindValue(':worker', (int)$this->worker, PDO::PARAM_INT);
$command->bindValue(':priority', (int)$this->priority, PDO::PARAM_INT);
$command->bindValue(':task_name', $this->task_name, PDO::PARAM_STR);
$command->bindValue(':task_group', $this->task_group, PDO::PARAM_STR);
$command->bindValue(':task_data', $this->task_data, PDO::PARAM_STR);
$command->bindValue(':task_id', $this->task_id, PDO::PARAM_INT);
$command->bindValue(':notice', $this->notice, PDO::PARAM_STR);
return $command->execute();
Все бы хорошо, но периодически возникают проблемы когда делаешь unserialize($task_data), единственное что получилось выяснить это то что в базе строка task_data обрезается,
в базе (это окончание сериализованной строки)
Код: Выделить всё
s:149:"<p>Пожалуйста,сбросьте мне сообщение с ссылкой на новый закуп,когда откроется</p>
Код: Выделить всё
s:145:"<p>Пожалуйста,сбросьте мне сообщение с ссылкой на новый закуп,когда откроется</p>";}
Первый вывод который лезит в голову это как будто какой то баг в функции serialize, видимо пользователи вводят какой то непонятный символ из за которого съезжает концовка строки, причем ошибки возникают вне зависимости от нагрузки на сайт, вне зависимости от размера данных, столбец task_data' имеет тип mediumtext
-
Не знаю в какую сторону копать? воспроизвести не получается т.к. ошибка бывает редко, примерно один раз на 40000 строк