Как запустить несколько команд с помощью Symfony \ Component \ Process \ Process

Мы используем хостинг https://www.cloudfoundry.org/ для нашего приложения. Чтобы подключиться к серверу, мы должны использовать cf ssh APP-NAME вместо обычной команды ssh.

Теперь я хочу написать простую программу для выполнения задач, например https://deployer.org/, для выполнения некоторых ремесленных команд на сервере. Из-за этого мне надоел Symfony\Component\Process\Process, который работает для подключения к серверу, но я не могу держать соединение открытым для выполнения некоторых других команд.

Кто-нибудь знает, как держать соединение открытым и запускать какие-то команды?

Вот мой текущий код:

use Symfony\Component\Process\Process;

$process = new Process("cf ssh APP-NAME");
$process->setPTY(true);

// Add some other commands like "php artisan migrate" 

$process->run();

echo $process->getOutput();

Вас ждет множество неприятностей, если вы ищете дополнительную обработку через компонент процесса. Я думаю, что это возможно, но я бы посоветовал изучить использование SSH без cf ssh. docs.cloudfoundry.org/devguide/deploy-apps/… Предложение Василия о laravelcollective / remote является точным, ЕСЛИ вы можете понять, как подключиться через чистый SSH. Если вы не можете, вместо кучи подпроцессов поместите все команды, которые вы хотите выполнить подпроцессом (ручная миграция и т. д.), Внутри задачи: docs.cloudfoundry.org/devguide/using-tasks.html

j.steelman 16.03.2018 17:47

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

Nio 17.03.2018 19:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
1 137
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Выполнение команд на удаленном сервере - это совершенно другая функция, чем запуск подпроцессов. Таким образом, он принадлежит не компоненту Process, а другой библиотеке. Попробуйте использовать этот phpseclib / phpseclib, здесь вы можете найти хорошее руководство phpseclib / руководство по phpseclib.

Или этот ssh-клиент / ssh-клиент.

Также взгляните на этот пакет laravel laravelcollective / удаленный

Другие вопросы по теме