Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Начните с маленькой подводной лодки: устанавливайте бомбы, избавляйтесь от врагов и старайтесь не попадаться на глаза своим плавучим врагам. Вас ждет еще несколько игровых вселенных, много уникальных сюжетов и интересных загадок.

Пикабомбер

Аркады, Пиксельная, 2D

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
3
shuchkin
shuchkin
5 месяцев назад

Анекдот про рекурсию⁠⁠

Когда воспользовался хинтом от IDE на апгрейд функции (PHP 7 - PHP 8) и положил сервер на 4 часа из-за OOM

Анекдот про рекурсию Программирование, PHP

А почему бы и нет

Анекдот про рекурсию Программирование, PHP

И на прод

Анекдот про рекурсию Программирование, PHP

Апдейт коснулся разных частей системы, htop красный, кеш увеличили, кол-во процессов уменьшили, все равно php-fpm тупит, php демоны не отзываются и падают с непредсказуемой периодичностью

Анекдот про рекурсию Программирование, PHP

Оказывается это был блок с полифилами, новая версия str_contains на сервере с PHP 7 впадала в бесконечную рекурсию. Вернули строку как было - все ожило.

Показать полностью 3
[моё] Программирование PHP
9
3
dirtyhack
dirtyhack
5 месяцев назад
Типичный программист

Tears in rain⁠⁠

Перечитал комменты, под своей последней (простите но у меня аллергия на слово крайний), статьей на хабре и пришло на ум:

Я видел такое, что вам, людям, и не снилось.

PHP-код, состоящий чуть менее, чем полностью из магических методов.

Атакующие корабли, пылающие над Орионом.

Костыли в FlatASMe, удерживающие систему на честном слове.

Лучи Си, разрезающие мрак у ворот Тангейзера.

Java-классы, унаследованные от 17 абстракций.

И if err != nil, вызвавший холивар среди гоферов.

Все эти мгновения затеряются во времени, как… слёзы в дожде…

Пришло время gc.collect().

Постмодернизм IT Golang PHP Java Assembler Текст
4
4049
AWer
6 месяцев назад

Запрещенный контент⁠⁠

Запрещенный контент
Касперский PHP Firewall Скриншот Юмор IT юмор Зашакалено
358
2
argoncorp
6 месяцев назад

Говнокодер⁠⁠

Ну вы это, мелодию сами подкините)))

Будто бы на опиойдах
я ебашил бириксойдом ойойой
Не фронтендер и не повар
А ебучий говнокодер ойойой
Было время я ебашил
просто так за хлеб и кашу ойойой
Сто скриптов добавил в кроне
навалил говна в шаблоне ойойой

Опенкарт битрикс или вордпресс
Наговнять на любой ЦМС
Только доступы ты мне давай
Всё готово - иди проверяй

Говнокод говнокод говнокод
я художник, а не идиот
Я так вижу работу свою
Пойду правки в продакшн солью

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

На фреймворке или на цмс
На реакте или на вью джи эс
По хуЮ мне на чем сделан сайт
Ведь везде можно накостылять

Говнокод говнокод говнокод
я художник, а не идиот
Я так вижу работу свою
Пойду правки в продакшн солью

Заезжают и модЫксы
Сайтов много там говнистых ойойой
Плагины все от народа
сто процентов говнокода ойойой
И какой-то черт бывалый
обосрет все материалы ойойой
Сниппеты в код навставляет
А что делать сам не знает ойойой

Даже если на МодЭксе сайт
Его можно легко обговнять
Много способов для этого есть
Но пора знать бы нам всем и честь

Говнокод говнокод говнокод
я художник, а не идиот
Я так вижу работу свою
Пойду правки в продакшн солью

Стих мой - тег моё. За ошибки прошу прощения, я синий как изолента.

UPD: Тег Мат почему-то не выбрался. Простите

Говнокодер Работа, Программирование, PHP, Cms, Стихи, Говнокодинг, Modx, Wordpress, Стеб, Мат, Текст, Длиннопост
Показать полностью 1
[моё] Работа Программирование PHP Cms Стихи Говнокодинг Modx Wordpress Стеб Мат Текст Длиннопост
11
8
ProgTime
ProgTime
7 месяцев назад
Лига программистов

Отправка логов в Telegram. Модуль для Laravel⁠⁠

Отправка логов в Telegram. Модуль для Laravel PHP, Laravel, Telegram бот, Длиннопост

Всем привет! В данной записи я хотел бы поделиться с вами модулем который я разработал для Laravel.

https://github.com/prog-time/tg-logger

Это мой первый опыт в разработке публичных модулей для Laravel, поэтому прошу не судить строго!

Данный модуль позволяет легко и быстро настроить отправку логов и сообщений об ошибках в Telegram сообщество, где под каждый тип события вы можете выбрать отдельный топик. Таким образом вы можете отправлять сообщения о кастомных событиях, исключения и системные ошибки.

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

Настройка модуля

Для начала вам нужно создать Telegram бота который будет отвечать за отправку оповещений. После этого создаём группу, включаем в ней «Темы» и добавляем созданного бота в группу (обязательно с правами администратора).

О создание бота вы можете почитать тут - https://prog-time.ru/course/bot-v-telegram-2/

Для получения ID сообщества вам необходимо добавить бота @myidbotв группу и отправить команду /getgroupid в чат.

После создания бота, записываем токен бота и id группы в .env файл.

TG_LOGGER_TOKEN="token_bot"
TG_LOGGER_CHAT_ID="id_group"

Устанавливаем модуль через Composer.

composer require prog-time/tg-logger

После установки модуля, вам необходимо создать конфигурационный файл config/tg-logger.php и прописать в нём параметры для работы модуля.

Вы можете создать файл вручную или перенести заготовленную версию конфигурации, которая находится внутри модуля, прописал следующую команду.

php artisan vendor:publish --tag=config

После настройки tg-logger.php, вам необходимо запустить команду которая создаст темы в группе.

php artisan tglogger:create-topics

*После запуска данной команды, файл tg-logger.php будет перезаписан и в нём будут указаны id тем

На этом настройка модуля закончена, ниже рассмотрим как работать с модулем TgLogger.

Работа с модулем TgLogger

Отлов системных ошибок

Для отлова всех типов ошибок вам необходимо изменить базовый обработчик логов в конфигурационном файле config/logging.php, указав в качестве обработчиков классы модуля.

'channels' => [

...

'telegram' => [

'driver' => 'monolog',

'handler' => ProgTime\TgLogger\TgHandler::class,

'formatter' => ProgTime\TgLogger\TgFormatter::class,

'level' => 'debug',

],

...

],

И в .env изменить параметр LOG_CHANNEL

LOG_CHANNEL=telegram

Отправка сообщений через класс TgLogger

Вы также можете отправлять оповещения, напрямую, используя класс TgLogger и статический метод sendLog().

TgLogger::sendLog('Your message', 'level');

Большое спасибо тем кто дочитать данную статью до конца! Буду очень рад если вы поддержите данное решение на GitHub и напишете свой комментарий под данным постом.

Показать полностью
[моё] PHP Laravel Telegram бот Длиннопост
2
9
dimitrioniks
dimitrioniks
7 месяцев назад
Искусственный интеллект
Серия О программировании не от программиста ( нейросети)

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер)⁠⁠

Год с небольшим назад начал торговать кое-каким товаром на Wildberries, а поставщик требовал удерживать РРЦ- очень очень. Иначе штрафы и другие проблемы. Поэтому начал искать, сначала один программист, сделал сыроватый продукт, потом другой сделал как надо.. В итоге, стал сам пользоваться, и другим продавцам у нашего продавца тоже предоставил такую возможность.

В итоге, спустя полгода доработок- в неспешном тормозном стиле ( мне вообще-то 48 лет, и последний раз программировал в институте на турбо-паскале и бейсике в школе), получилось то что получилось, ниже это просто своего рода памятки. Рекламные статьи будут совсем на других ресурсах.

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

Так что думаю совсем с нуля такое не получится написать, надо хотя бы немного уметь читать документацию и задавать чёткие запросы нейросетям, тем не менее, как говорится, не верю своим глазам!

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

Итак, что мы имеем в сухом остатке:

Было изначально:

Репрайсер, удерживающий РРЦ  (рекомендованную розничную цену), с проверкой раз в 7 минут ( задается в настройках планировщика хостинг-панели), хранение данных в  файловой бд sqlite. Контроль СПП и WB кошелька. ( первоначальные затраты 50 000 р, оплата программистам, первый создал неудачный костыльный вариант ( блин комом), второй создал очень хорошую основу с удачной архитектурой для обновления и для обучения на примере)

Также репрайсер изначально содержит возможность телеграм уведомления при ошибках обновления цен ( в основном это говорит о том, что на WB неполадки того или иного рода)

Что было далее сделано мной  с помощью DeepSeek и Le Chat, вначале использовался Copilot, но быстро отправился в утиль..:

В самом репрайсере:

1)  Изменение цен в заданных диапазонах времени ( свой прайс- под каждый диапазон времени)

2)  Таблица репрайсера показывает остатки товара  ( можно выгрузить в CSV, или Excel, с остальными параметрами, чтобы отфильтровать по заданным диапазонам)

3)  Загрузка цен до СПП ( изначально репрайсер создан для удержания РРЦ)

4)  Загрузка цен до WB кошелька.

5)  Юнит-калькулятор ( расчет прибыльности  и маржи в %, выгрузка в виде Excel-отчета, быстрая проверка рекламных расходов)

6)  Полуавтоматическое обновление цен поставщика при условии заданного артикула поставщика в первой колонке Excel прайса.

7)  Реализация создания отчета для отправки поставщику, при выполнении условия из п.6

8)  Установка в прайсе товаров, которые не нужно менять

9)  Горячая замена цен ( клик мышкой, открывается окно, вписывается цена). В основном цены задавались только напрямую через excel прайс, и приходилось каждый раз загружать новый прайс с измененной ценой.

10)  Быстрый вывод товаров с нулевым СПП.

11)  Вывод логов действий репрайсера за последние два дня- в модальном окне, либо скачивание файлов отчетов ( до этого только я мог сам посмотреть по FTP)

12) Выводится дата годности токена на видном месте ( ранее информации не было).

Внешние доработки, для себя, не используются другими клиентами, но можем сделать и вам😊

1)  Выдача пропусков по расписанию ( актуально для FBS)

2)  Синхронизация цен с OZON ( можно ставить в WB такие же цены как в Ozon, при условии доступа к api ozon, либо к сторонним json выгрузкам с прайсом в Ozon.

3)  Слежение за конкурентами  и создание таблиц с отчетами, проверка цены раз в час, выгружаются таблицы за последние 10 дней, а также в режиме реального времени,с уведомлением о нарушении в телеграм.

4)  Слежение за конкурентами и следование ценовым стратегиям ( держать цену на 1р ниже, или такую же как у конкурента, но не ниже заданного предела). В процессе тестирования, проверялось на малом количестве товаров, планируется интеграция в репрайсер

5)  Суммирование возвратов ( упрощение процесса работы с возвратами), актуально если очень много товаров.


Для удобства работы с клиентами

1)  Обновитель-updater ( эдакая замена GIT по простому), на основе WinSCP ( да, голь на выдумки хитра, и до сих пор не научился пользоваться git, контроль версий проводится кустарно ( в этой папке старое, в этой новое, тестирую, смотрю). При нажатии одной кнопки происходит обновление на разных ftp-серверах, в разных папках, всех установленных репрайсеров, когда была сделана доработка.

2)  Панель для контроля оплат, интегрирована с платёжной системой Prodamus через API ( автоматическое продление подписок), в целом реализована система автоматического выключения при неоплате, но пока достаточно всё видно и по таблице оплат.

3)  Инсталлятор, то есть клиент вводит в заданной форме емайл, телефон, название организации, логин и пароль, репрайсер устанавливается автоматически по заданному адресу, настройки выдаются на экране установщика и отправляются на почту. Ранее всё делалось вручную, пароли задавались также, файлы копировались через FTP вручную.

Roadmap. Что будет сделано ( в процессе, или в планах):

Для себя: Уведомление об остатках ( если товара мало- приходит уведомление на почту и в телеграм), уже работает, но с колебаниями, в процессе доработки

Для клиентов: Whatsapp-уведомление для желающих ( выбор в настройках),  если WB-кошелек сменился ( ранее работало автоматическое обновление WB-кошелька, сейчас задаётся вручную, ввиду изменений WB, возможно это обновление и не понадобится. если WB вернет доступ к настройкам). Также будет сделано уведомление о времени завершения работы токена ( за неделю).

Для клиентов: Задание диапазона обновления/проверки цен в админ/панели, от 7 до 60 минут ( сейчас в основном задаю вручную 1 раз в 7 минут,  1 раз в 10-15 минут, кому этого достаточно и не нужно очень быстро). Отключение/Включение обновления через админ/панель.

Для клиентов: Возможное добавление юнит-калькулятора для учёта %  возвратов ( актуально для одежды, где много возвратов, и существующий юнит-калькулятор показывает тогда далеко не точные цифры). Также в общем будет сделана доработка юнит-калькулятора для удобства использования  ( цветовые диапазоны для разных уровней прибыльности), сейчас выводится красным если ниже 0, а также другие доработки для горячего анализа прибыльности, сейчас таблица с параметрами добавляется через Excel.

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


Возможны другие доработки в меру сил, по пожеланиям клиентов.

Доработки с пометкой для себя чаще всего не внедряются в репрайсер, чтобы его не загромождать ( да и не всем клиентам это нужно), внедряются в первую очередь полезные доработки.

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Ежели будут любые вопросы спрашивайте, авось отвечу:-)

Несколько скринов, для наглядности

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Самый начальный вариант

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Как репрайсер выглядит сейчас

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Еще чуть подробней

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Задание диапазонов прайсов по времени

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Таблица юнит-экономики

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Вывод логов- что делал репрайсер.

Показать полностью 7
[моё] Программирование PHP Wildberries Нейронные сети ChatGPT Фриланс Проект Длиннопост
5
8
Artem.Saga
7 месяцев назад

PHP и C: как мы заставили кассу АТОЛ 30Ф работать в веб-системе⁠⁠

PHP и C: как мы заставили кассу АТОЛ 30Ф работать в веб-системе Онлайн-кассы, PHP, Интеграция, Веб-разработка, Автоматизация, Длиннопост

Интеграция оборудования с веб-системами часто становится непростой задачей, особенно когда дело касается специфических устройств, таких как кассы. В одном из наших проектов потребовалось настроить взаимодействие кассы АТОЛ 30Ф с веб-приложением, работающим на PHP. Этот кейс стал для нас важным шагом в изучении возможностей автоматизации и оптимизации бизнес-процессов.

Как все начиналось

Касса АТОЛ 30Ф — это популярное решение для ритейла, но её работа традиционно рассчитана на использование с локальными системами, такими как 1С. Нам же нужно было подключить её к веб-приложению, чтобы обеспечить удалённое управление операциями.

Проблема заключалась в том, что драйверы кассы были написаны на языке C и не имели нативной поддержки PHP. Задача заключалась в том, чтобы связать веб-приложение с физическим устройством напрямую, сохранив его функциональность и производительность. Решение мы нашли в технологии FFI (Foreign Function Interface), позволяющей PHP взаимодействовать с библиотеками на других языках.

FFI: как PHP взаимодействует с C

FFI — это расширение PHP, которое открывает доступ к библиотекам на C. С его помощью можно описать функции библиотеки и вызывать их из PHP-кода, как если бы они были встроенными.

Работа началась с изучения заголовочного файла библиотеки Драйвер контрольно-кассовой техники v.10. Этот файл содержал описание ключевых функций, включая команды для управления устройством, передачи данных и получения ответов. Благодаря FFI мы смогли подключить библиотеку и использовать её функции прямо из веб-приложения.

Например, команда для печати чека выглядела следующим образом:


Код на С для печати чека

#include "libfptr10.h"
libfptr_handle fptr;
libfptr_create(&fptr);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L"Товар");
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_TAX_SUM, 51.5);
libfptr_registration(fptr);


Для упрощения взаимодействия с функциями и переменными из кода на C мы создали PHP-классы-заглушки. Они полностью повторяли структуру заголовочного файла библиотеки, предоставляя описание необходимых функций и переменных на уровне PHP.

Этот подход значительно упростил работу: разработчики могли удобно вызывать методы, а также быстро просматривать их сигнатуры и параметры прямо в IDE, без необходимости заглядывать в исходные файлы на C.


Подключение драйвера ККТ в нашем коде

$libfptr = FFI::cdef(file_get_contents('libfptr10.h'), 'libfptr10.so');$fptr = $libfptr->new('libfptr_handle', false);
$libfptr->libfptr_create(FFI::addr($fptr));
$libfptr->libfptr_set_param_str($fptr, Param::LIBFPTR_PARAM_COMMODITY_NAME, 'Товар');
$libfptr->libfptr_set_param_double($fptr, Param::LIBFPTR_PARAM_PRICE, 100);
$libfptr->libfptr_set_param_double($fptr, Param::LIBFPTR_PARAM_QUANTITY, 5.15);
$libfptr->libfptr_set_param_int($fptr, Param::LIBFPTR_PARAM_TAX_TYPE, TaxType::LIBFPTR_TAX_VAT10);
$libfptr->libfptr_set_param_double($fptr, Param::LIBFPTR_PARAM_TAX_SUM, 51.5);
$libfptr->libfptr_registration($fptr);

PHP вызывал функцию драйвера, которая напрямую передавала команды кассе.

Стек технологий

Для реализации проекта мы использовали следующий стек технологий:

  • PHP 8.0: основной язык разработки веб-системы.

  • FFI: для связи с библиотекой на C.

  • MySQL: для хранения данных о транзакциях и конфигурациях касс.

  • Nginx: в качестве веб-сервера.

  • Docker: для упрощения тестирования и развёртывания.

  • Linux: серверная операционная система, обеспечивающая поддержку необходимых драйверов.

Особенностью проекта стало сочетание гибкости PHP для веб-разработки и производительности библиотек на C.

С какими трудностями мы столкнулись

Этот проект не обошёлся без сложностей, которые потребовали нестандартного подхода. Одной из основных проблем стало различие в форматах данных: PHP использует строки в кодировке UTF-8, тогда как драйвер кассы ожидал 32-битные данные.

Ещё одной сложностью стало управление памятью. В PHP оно происходит автоматически, тогда как в C за это отвечает разработчик. Чтобы избежать утечек и сохранить стабильность работы, мы реализовали дополнительные меры для корректного освобождения памяти. Кроме того, нам нужно было обеспечить поддержку разных способов подключения кассы — USB, Bluetooth и IP. Мы адаптировали систему так, чтобы она могла работать с любым из этих интерфейсов, обеспечивая гибкость использования в зависимости от сценария.

Как это работает в веб-системе

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

Это позволило клиенту управлять кассовыми операциями удалённо, что особенно полезно в ситуациях, когда устройство подключено через IP. При необходимости веб-система также поддерживает работу с кассой через локальные интерфейсы, такие как USB или Bluetooth.

Что мы вынесли из этого проекта

Опыт, полученный в процессе реализации задачи, показал, насколько мощным инструментом может быть FFI. Он позволяет интегрировать устройства и системы на разных языках, что открывает широкие возможности для автоматизации и оптимизации бизнес-процессов.

Этот подход оказался универсальным и может быть применён для работы не только с кассами, но и с другими устройствами: от драйверов видеокарт до сетевых адаптеров.

Работа с FFI и драйверами на C расширила наши представления о возможностях PHP и показал, что грамотное использование технологий позволяет находить простые и эффективные решения для сложных задач.

Показать полностью 1
[моё] Онлайн-кассы PHP Интеграция Веб-разработка Автоматизация Длиннопост
2
Robertogracias
Robertogracias
8 месяцев назад

Visual Studio Code и XDebug(PHP)⁠⁠

Пытаюсь настроить Visual Studio Code (под Виндой) для отладки PHP XDebug.

Завел виртуальную машину c Ubuntu24.04 на своем компе с адресом 192.168.0.121.

На нее установил apache2 и nginx. Но nginx пока отключен, чтоб цепочка проверки логов была поменьше.

Установил также php8.3, активировал в apache2, проверил: все работает.

добавил пакет php8.3-xdebug.

в его конфиг /etc/php/8.3/mods-available/xdebug.ini добавил

zend_extension=xdebug.so

xdebug.mode=debug

xdebug.client_host=localhost

xdebug.client_port=9003

В файл /etc/php/8.3/php.ini добавил

[Xdebug]

zend_extension=xdebug.so

xdebug.mode=debug

xdebug.start_with_request=yes

xdebug.client_host=192.168.0.121

xdebug.client_port=9003

xdebug.log=/var/log/xdebug.log

добавил разрешение в фаерволл на открытый порт 9003 и проверил его дееспособность через netcat: все передает.

остановил сервис nginx, php8.3-fpm.

остановил сервис apache2 и запустил его заново.

Создал на "сайте" в DOCUMENT_ROOT файл testphp.php с <?php phpinfo(); ?>

На виндовой машине добавил себе в remote explorer конфигурацию на доспут по ssh к этой виртуальной машине.

Установил плагин "PHP Debug". Открыл его файл launch.json и добавил конфигурацию:

,

{

"name": "Xdebug-srvu24",

"type": "php",

"request": "launch",

"hostname": "192.168.0.121",

"port": 9003

}

Открыл файл testphp.php в VSC и поставил галочку брэйкпоинта.

Запустил дебагинг в VSC.

В браузере винды обратился к файлу: всю инфу показал, но VSC никак не реагирует.

Смотрю в файле /var/log/xdebug.log :

[2018] Log opened at 2024-11-19 09:41:57.425446

[2018] [Config] INFO: Control socket set up succesfully: '@xdebug-ctrl.2018'

[2018] [Config] INFO: Systemd Private Temp Directory is enabled (/tmp/systemd-private-e2eca4e10616490b84db3fd61bbef9a9-apache2.service-BPAifR)

[2018] [Step Debug] WARN: Debugger is not working optimally, as Xdebug is loaded before Zend OPcache

[2018] [Step Debug] INFO: Connecting to configured address/port: localhost:9003.

[2018] [Step Debug] WARN: Creating socket for 'localhost:9003', poll success, but error: Operation now in progress (29).

[2018] [Step Debug] ERR: Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port).

[2018] Log closed at 2024-11-19 09:41:57.426839

Пробовал в /etc/php/8.3/php.ini менять xdebug.client_host на localhost, 127.0.0.1 после смены перезапускал apache2 - ошибка в логе та же самая.

Что делаю не так?

Показать полностью
Devel PHP PHP Visual studio Code Debug Текст
3
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии