スキップしてメイン コンテンツに移動

投稿

PHPでZipファイルを解凍する方法

PHPでZipファイルを解凍するには、ZipArchiveを使うのが簡単です。パスワードの必要なZipファイルも簡単に解凍できます。 function unzipFile($source, $destination, $password=null) { $zip = new \ZipArchive(); try {   if(!$zip->open($source)) { throw new \RuntimeException('failed to open zip file: '.$source); } if($password) { $zip->setPassword($password); } $zip->extractTo($destination); } finally { $zip->close(); } }

Composerでインストールされているパッケージをバージョンチェックする方法

スクリプトで実行する場合は、-dでターゲットディレクトリを指定できる方法が楽です。 composer -d{ターゲットのディレクトリ} show 応用として、リモートホストにsshでログインして、結果をローカルのホストにファイルとして保存するbashスクリプトは、下記で実現できます。 #!/bin/bash user="ユーザー" host="ホスト" directory="対象ディレクトリ" result_file="出力結果ファイル" `ssh $user@$host "composer -d$directory show" &> $result_file'

MySQLで分散Transaction (XATrsancsaction)を使うためのPHPのサンプルコード

別サーバーにまたがる複数のDBへのTransactrionを管理するには、2 Phase Commitが用いられることがあります。 今回のコードは、できるだけ流れがわかるように可能な限り単純にしてあります。エラー処理などは厳密に実施していませんので注意してください。 その代わり1コマンドごとにログを書くようにして、エラーが起きたときにどこで落ちたか、可能な限り終えるようにしてあります。 このコードをProductionで使う場合(あまり推奨しません。。。)は、十分に検証してから使ってください。 XA Transactionのコマンドの流れ server1とserver2の2つのDBサーバーに対してXA transactionコマンドを実行する流れは、下記のようになります。 // XA trsanction start server1: XA start 'test' server2: XA start 'test' //-------------------------------- // server1とserver2のDBのデータ更新 //-------------------------------- // XA trsanction commit server1: XA END 'test' server2: XA END 'test' server1: XA PREPARE 'test' server2: XA PREPARE 'test' server1: XA COMMIT 'test' server2: XA COMMIT 'test' // 更新中にエラーが起きた場合のrollback server1: XA END 'test' server2: XA END 'test' server1: XA PREPARE 'test' server2: XA PREPARE 'test' server1: XA ROLLBACK 'test' server2: XA ROLLBACK 'test...

Linuxコマンド1行で、ファイルが空かどうか判定してメッセージ出力

もっとスマートなやり方があるかもしれませんが、下記のコマンドで実現できます。 du -h {調べたい対象のファイル} | awk -F ' ' '{if (\$1 == 0) print "file is empty"; else print "file is not empty";}' duコマンドの結果でファイルサイズを取得 (ファイルサイズ取れればどんなコマンドでもOK) コマンド出力結果でファイルサイズの部分が0かどうかをawkで判定して、ファイルサイズの結果に応じてメッセージを出力

zip圧縮されたsqlを解凍しながらMySQLに実行させる方法

mysqldumpなどで生成されたzip圧縮された巨大なsqlを解凍しながら、mysqlへ実行(リストア)する方法です。 パイプ(|)とリダイレクト(<)を駆使します。 gunzip < test.sql.gz | mysql -u USER -pPASSWORD -D DBNAME ちなみにmysqldumpの出力をzip圧縮する方法は下記になります。 mysqldump -u USER -pPASSWORD DBNAME | gzip > dump.sql.gz

Eclipseでコードカバレッジのハイライトを削除する方法

Eclipseには便利なコードカバレッジ表示機能が搭載されていますが、コード内に緑、赤、黄の色付けがされて煩く感じるときもあると思います。 1度カバレッジの色付けが出てしまった後に消す方法の紹介です(方法は簡単)。 下記のキャプチャの青いマーカーで示した「Remove All Sessions」のボタンを押せばすべて消えます。