質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

1598閲覧

ssh2_exec で service memcached restart

bigdock

総合スコア4

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/05/25 14:40

ssh2_execで sudo service memcached restart を実行した時に、再起動が行われずどうしたらよいのか方法をご存知の方に聞きたいです。

###現状

  • コマンドラインからのssh接続でサービスを開始すれば問題なく開始されるので緊急度は低いです。
  • 再起動を行うのはキャッシュのクリアを行うためなので、例えばワンライナーでクリア出来るようなコマンドがあるなどあれば、それに変更なども考えます。
  • ssh2_execやストリーム系の処理の経験もほぼ無いため、そもそもこの実装で良いのかという疑問がありますので、おかしい部分があれば指摘頂きたいです。

###該当のソースコード

PHP

1$cmd = 'sudo service memcached restart'; 2try { 3 $stream = ssh2_exec($connection, $cmd); 4 $streamError = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR); 5 stream_set_blocking($stream, true); 6 stream_set_blocking($streamError, true); 7 $result = fread($stream, 4096); 8 if (!empty($result)) { 9 $this->addStdout($result); 10 } 11 $result = fread($streamError, 4096); 12 if (!empty($result)) { 13 $this->addStderr($result); 14 throw new Exception($result); 15 } 16} catch (Exception $e) { 17 Log::error($e); 18} finally { 19 if (isset($stream)) { 20 fclose($stream); 21 } 22 if (isset($streamError)) { 23 fclose($streamError); 24 } 25}

###発生している問題・エラーメッセージ
7行目の$result で返ってくるのはStopping memcachedのメッセージです。

ssh接続で、sudo service memcached statusをすると、memcached dead but pid file existsとなっています。

その後sudo service memcached startをすると、問題なく開始されます。

###試したこと

  • コマンドをsudo service memcached stopに変えても同じでした。

  • コマンドをsudo killall memcachedに変えても同じでした。

  • 1行目の$cmdを他のコマンド(例えばdateなど)に変更すれば特に問題無く実行されますので、基本的には動作するコードです。変な部分は指摘ください。

不明点などあれば聞いてくださいませ。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/05/26 00:21

(当方、詳しいわけではないですが)PHP以外のタグもつけたほうが有識者のアドバイスをもらえそうな気がします。memcachedとかSSHとかterateilにもタグがあるようなので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問