Мы используем хостинг 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, я могу использовать деплойер для своих задач :)






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