Комментарии 12
Спасибо, кейс очень интересный. Вот только отчаянно не хватает подробностей. Сейчас материал больше похож на заметки для себя, чем на познавательную статью для читателей.
Фактически, информационная составляющая сводится к "В PHP есть FFI". А те же трудности только упомянуты, но не даётся никаких рекомендаций по их преодолению.
PHP использует строки в кодировке UTF-8, тогда как драйвер кассы ожидал 32-битные данные
Что-то я не понял это место. PHP работает с однобайтовой строкой, для остальных кодировок, в том числе UTF-8, нужно использовать внешние функции (iconv, mb* и так далее). Можете раскрыть тему?
Да ладно придираться-то :) Понятно что не "РНР", а "наше приложение". Совершенно стандартная конфигурация любого современного сайта.
Причём тут придирки?
Понятно что…
Я начал своё сообщение с фразы «…я не понял это место». Если вам понятно — ок. Но прочитайте внимательно что именно я написал.
И чем не устраивает моё объяснение? Понятно что я свечку не держал, но оно на мой взгляд совершенно очевидно. Вместо РНР следует читать "наше приложение". И всё сразу встанет на свои места. "Наше приложение, как и любой другой современный сайт, работает с данными в кодировке utf-8, а драйвер кассы ожидал UTF-32".
Ну или как вариант, эту фразу можно толковать как отсылку к default_charset, которая задает умолчания для тех же mbstring и iconv и плюс формирует кодировку для заголовка Content-type. Суть будет та же, но чисто формально ближе к "PHP использует".
И не нужно быть таким серьёзным, не корову мы тут продаём :)
Ваш кассовый аппарат подключен к той же машине где поднят web сервер с php?
Я писал управление драйвером для мониторинга этих касс под виндой, может дело в этом, и таких сложностей не испытывал. К этим кассам идёт подробное описание работы с драйвером на С, питоне, С++,С#,go,java, delphi, почему выбрали именно С- не очень понятно.
Не очень понятно, что именно вам непонятно. Вы же сами пишете
К этим кассам идёт подробное описание работы с драйвером на С
Ну вот они и взяли этот драйвер на C, и обращаются к нему из РНР. Что здесь непонятного?
Так же интегрировал CRM на php с кассой Атол. Но использовал веб-сервис Атол для работы с кассами. Пока не очень понятен профит от FFI
PHP и C: как мы заставили кассу АТОЛ 30Ф работать в веб-системе