77use Pavlusha311245 \UnitPhpSdk \Config \Application \ProcessManagement \RequestLimit ;
88use Pavlusha311245 \UnitPhpSdk \Config \Listener ;
99use Pavlusha311245 \UnitPhpSdk \Enums \ApplicationTypeEnum ;
10+ use Pavlusha311245 \UnitPhpSdk \Enums \HttpMethodsEnum ;
1011use Pavlusha311245 \UnitPhpSdk \Exceptions \UnitException ;
12+ use Pavlusha311245 \UnitPhpSdk \Interfaces \ApplicationControlInterface ;
1113use Pavlusha311245 \UnitPhpSdk \Interfaces \ApplicationInterface ;
1214use Pavlusha311245 \UnitPhpSdk \Traits \HasListeners ;
15+ use Pavlusha311245 \UnitPhpSdk \UnitRequest ;
1316
14- abstract class ApplicationAbstract implements ApplicationInterface
17+ abstract class ApplicationAbstract implements ApplicationInterface, ApplicationControlInterface
1518{
1619 use HasListeners;
1720
21+ public const SOCKET = '/usr/local/var/run/unit/control.sock ' ;
22+ public const ADDRESS = 'http://localhost ' ;
23+
1824 private string $ _type ;
1925
2026 /**
@@ -248,10 +254,10 @@ public function parseFromArray(array $data): void
248254 $ this ->setStdOut ($ data ['stdout ' ]);
249255 }
250256
251- // TODO: implement isolation object
252- // if (array_key_exists('isolation', $data)) {
253- // $this->setIsolation($data['isolation']);
254- // }
257+ // TODO: implement isolation object
258+ // if (array_key_exists('isolation', $data)) {
259+ // $this->setIsolation($data['isolation']);
260+ // }
255261
256262 if (array_key_exists ('processes ' , $ data )) {
257263 if (is_array ($ data ['processes ' ])) {
@@ -265,4 +271,20 @@ public function parseFromArray(array $data): void
265271 $ this ->setLimits (new RequestLimit ($ data ['limits ' ]));
266272 }
267273 }
274+
275+ /**
276+ * @inheritDoc
277+ */
278+ public function restartApplication (): bool
279+ {
280+ try {
281+ $ request = new UnitRequest (self ::SOCKET , self ::ADDRESS );
282+ $ request ->setMethod (HttpMethodsEnum::DELETE ->value );
283+ $ result = $ request ->send ("/control/applications/ {$ this ->getName ()}/restart " );
284+ } catch (UnitException $ exception ) {
285+ return false ;
286+ }
287+
288+ return true ;
289+ }
268290}
0 commit comments