Sahen
@Sahen
ох уж это программирование.....

Как исполнить Go — код на PHP?

Можно ли "скрестить" Go с PHP?
Что бы основной код был на PHP, а некоторые его части переписать на Go. (типа загрузка файлов на сервер, работа с БД и может еще что ни будь)
Как такое можно сделать?(если это возможно)
  • Вопрос задан
  • 621 просмотр
Пригласить эксперта
Ответы на вопрос 4
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
типа загрузка файлов на сервер, работа с БД и может еще что ни будь

А на php только echo останется видимо?
если вы это на php нормально не можете сделать, стоит ли на GO пытаться?

Либо всё на go делать, либо тяжелые задачи на go повесить, это будет демон или воркер для обработки из очереди, ну никак не php выполняет go или наоборот.

Загрузка файлов и работа с базой это не тяжелые задачи, тем более для php.
Обработка файлов после загрузки да, может быть тяжелой и долгой, но это очень редко: видео, большой импорт/экспорт данных.
Да только они тоже решаются на php, просто черед очередь задач, а не во время выполнения запроса отпользователя.

В общем исходя из того что написано: или у вас говнокод или вы что-то нафантазировали несуществующее, и GO вас ниак не спасёт пока не разберетесь что конкретно вам надо сделать/исправить.
Ответ написан
Комментировать
2ord
@2ord
Не знаю что там за тяжёлые задачи. Они хотя бы оформлены у вас как фоновые задачи? Тяжёлые задачи - это такие, которые сильно загружают ресурсы сервера (CPU, I/O, сеть) или которые длятся дольше, чем пользователь хотел бы ждать.
К тяжёлым запросам можно относить пред/пост-обработку каких-либо данных, генерацию отчётов для бизнес аналитики, т.е. операции, которые могут быть совершены без ожидания пользователем ответа.

Обычно их выносят в обработчик очередей (Gearman, Beanstalk, ZeroMQ, RabbitMQ, ...). А воркер очереди может быть написан на любом языке, если, допустим, используется протокол MsgPack. Также могут быть использованы Tarantool со встроенным языком Lua, а также Redis - в качестве хранилищ данных очередей.
То есть это переход с монолитного приложения на микросервисы.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Например, настроить в nginx чтобы часть адресов обрабатывалась через php, а другие через go.
Ответ написан
Firues
@Firues
Пишите микросервис на REST API. Это единственный вариант, который будет работать быстро и который будет делать то, что вам нужно.
nordicapis.com/writing-microservices-in-go вот пример.
В php все как json принимаете и разбираете.
Отметьте, пожалуйста, чей-нибудь ответ как верный. ;)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы