時々(あるいはしょっちゅう)あるのですが、バッチファイルが「二重に動くと吾妻しくねぇなぁ」な状況があります。 よくロックファイルによる二重起動防止とかを見るのですが…もうちょっと楽な手段があるので、まぁ「カードの一枚」程度に。 機構としては、至極一般的な「セマフォ」を使います。 セマフォは「プロセス間通信」の一環になります。…それ以上を知りたかったら、C言語系の書籍を適宜あたってくださいませ。 …そのうち解説するかもしんまい。リクエストはコメントもしくはリアルで直接どんぞ。 閑話休題 サンプルコードから、早速かつとっとと実装をまなんでみませう。 まずは「ロックされていない」状態を体感して確認。 バッチファイルはこんな感じ。ファイル名は「t.php」という、素晴らしく投げたネーミング。 // 処理 $pid = posix_getpid(); // print "start({$pid})
今や開発環境はローカルにあるのが一般的です。OSを合わせたい場合でもVMを使えば簡単に実現できます。問題はコードが書き終わった後のデプロイではないでしょうか。どのサーバにどのコードを反映し、どんなタスクを実行するのか、ライブラリの変更があるのかなどを適切に管理する必要があります。 Ruby/Ruby on Rails界隈ではCapistranoというソフトウェアが使われることが多いです。Capistrano自体は汎用的なデプロイツールですが、PHPであればやはりPHP製のツールの方が分かりやすいでしょう。そこで今回はDeployerというPHP製のデプロイツールを紹介します。 Deployer — Deployment Tool for PHP Deployerのセットアップ Deployerはとても簡単にセットアップできます。本体をダウンロードして、パスの通ったところに配置するだけです。
こんにちは! 東京なのに周辺にポケストップが1つもない田舎に住んでいます、@fortkle です(世田谷公園の徒歩圏内に引っ越したいです)。 さて、みなさんはPHPアプリケーションのデプロイツールに何を使っているでしょうか。 今回コネヒトで Deployer というPHPで書かれたデプロイツールを採用したのですが、なぜDeployerなのかという理由と、実際に使っているおすすめの設定をいくつか共有したいと思います。 ※ Deployerのインストール方法や基本的な使い方を知りたい場合は既にインターネット上に良い記事がたくさんあるのでそちらを参考にしてみてください。 デプロイツール、どうする? 今回、新しく小規模PHPアプリケーションをデプロイする機会があったため下記の条件で新しくデプロイツールの選定を行いました。 PHPのアプリケーションなので デプロイツールもPHP製のもの を採用したい
deployerについて サーバにモジュールをアップロードするような行為をデプロイといいます。昔はFTPやSCPでファイルをアップロードしたものですが、運用をしているとキャッシュファイルを削除しなくてはならなかったりで手続きが煩雑になってきます。 それを自動化しようというのがデプロイツールなのですが、webまわりで有名なデプロイツールとして「Capiostrano」などがあげられます。これがRuby製だったりします。環境をつくるのもそうですが、デプロイツールにはレシピというデプロイ手順を定義する必要があったりするのですが、ここでRubyを見ることになります。勉強すればよいだけの話ですがPHP製のツールはないかと思いたどり着いたのがdeployerでした。(他にもrocketterというツールがありますが、こちらの方が導入しやすそうだったという理由でdeployerを取り上げます) depl
2. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当 – その後、企業向けパッケージソフトの企画・開発・事業化を担当 – 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当 Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿などを開始 – 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立ち上げ • 現在 – HASHコンサルティング株式会社 代表 http://www.hash-c.co.jp/ – 独立行政法人情報処理推進機構 非常勤研究員 http://www.
少し前のことになりますが、正社員転職サービス「ジョブセンスリンク」を構成するPHPアプリケーション群のPHPバージョンアップ対応と、それに合わせてレガシーコードの大幅な整理を行いました。 「PHPのバージョンあげて、リファクタリングしたんだ」と一言で言えば簡単ですが、日々のサービス改善を滞らせず、システムのリニューアルを同時に進めていくのは多大な労力を要しました。 今回はその仕事を主に担当した、キャリア事業部技術基盤チーム*1の海野がお届けします。お手柔らかにどうぞ。 ミッション PHPのバージョン問題。レガシーコードの山積。システムが歳を重ねるにつれ、必ず直面する大きな問題です。 システムは、初めてリリースされた数年前の数倍の規模になっているでしょう。 売上を支えるシステムを維持し、事業を加速させる施策を阻むこと無く、システムのリニューアルを進める。これが今回のミッションとなりました。
Soyuz rocket delivered to the launchpad by train. Public domain photo by NASA Slack uses PHP for most of its server-side application logic, which is an unusual choice these days. Why did we choose to build a new project in this language? Should you? Most programmers who have only casually used PHP know two things about it: that it is a bad language, which they would never use if given the choice;
PHPに限らず、日付を比較するケースはよくありますね。 日付を比較し、過去か未来かを判定 日付の差を計算(2015年7月21日 - 2010年3月10日 = 5年4ヶ月11日) srttotime()がメジャーですが2038年問題など問題もあるため、日付の計算はDateTimeクラスを使うよう推奨されています。 とりあえず、両方のパターンをご紹介します。
GD を使ってそのまま透過PNGを作ろうとすると、 1ピクセルごとに透過(アルファ)値を操作する必要があり非常に処理が重くなります。 そこで、事前にテンプレートとなる透過PNGを用意し、それを重ねることで実現します。 画像準備 PHPコード コード解説 画像準備 画像を準備します。 少し分かりにくいですが、円の周りは透過しています。 後述しますが、描画色は 7F7F7F (R127,G127,B127)で準備します。 PHPコード 後は、下記コードで動作します。 $imgPath = '画像パス'; $imgInfo = getimagesize($imgPath); // ファイルオブジェクトを作成する // - ファイルタイプ別に呼び出すメソッドを変える $imgObj = null; switch($imgInfo['mime']){ case 'image/jpeg': $imgO
問題 phpのGD関数でpng画像を加工したら、透明部分が真っ黒になってしまいました。 答え jpegだと透明部分がないので気づかないが、PNG形式で透過部分、半透明部分があると思わぬ結果になることがある。 背景が塗りつぶされたり、背景(透明部分)との境界部分が汚くなったりする。 imagealphablending() と imagesavealpha() で、ブレンドモードとアルファチャネルの扱いを設定するとよい。 コード サンプル //元の画像 $original = imagecreatefrompng('./sample.png'); $x = imagesx($original); $y = imagesy($original); //縮小先 $resize = imagecreatetruecolor($x/2, $y/2); //ブレンドモードを無効にする imagealp
<?php $img = imagecreatefrompng($path); imagesavealpha($img, TRUE); imagepng($img); return; <?php function smart_resize_image( $file, $width = 0, $height = 0, $proportional = false, $output = 'file', $delete_original = true, $use_linux_commands = false ) { if ( $height <= 0 && $width <= 0 ) { return false; } $info = getimagesize($file); $image = ''; $final_width = 0; $final_height = 0; list($width
php で画像ファイル形式を判別する方法 getimagesize exif_imagetype mime_content_type の各館数のどれかで取得することが出来る。 各関数とモジュール 各関数はそれぞれがモジュールに含まれている。 関数名 モジュール名 getimagesize GD exif_imagetype Exif mime_content_type FileInfo これら関数を使うには、それぞれモジュールがインストールされていることが必要。 モジュールの有無はphpinfo();関数を使って確認する。 値の取り方 それぞれの関数はそれぞれ使い方が異なる mime_content_type mime_content_typeはそのものズバリな名前が帰ってくる。 <?php mime_content_type("test.jpg"); #=> "image/jpeg" g
この記事は何か 挑発的な文言になってる箇所はあるものの、内容としてはそれなりにまじめに書いたつもり。むしゃむしゃしてやった。いまでは反芻してゐる。 PHPDocは必ず書け あらゆる再利用可能な手続きは、他人が容易に応用できるように型が明示的でなければいけない。メンバー全員が実装コード全てを把握できるものならそれが理想だけれど、残念ながら時間は有限だ。ヘッダだけを読んでメソッドの仕様が理解でき、またはコードを読む助けになるようなコメントが良い。 有名な事実を紹介すると、多くのコードは数か月(早ければ数日!)も経てば、他人が書いたコードに感じられるほど理解できなくなることがしばしばある。もちろん設計の練度にもよらうが、設計判断について注意を要した点などをコメントに残しておくことで、ひいては未来の自分の役に立てることができる。 お前の先輩は「PHPには型がない」などと知ったかぶって意味不明1なこ
新年明けましておめでとうございます。GMOメディアの流しエンジニア、山田コーダーです。さて、ようやく弊社でもPHP 5.3、5.4系のプロジェクトの5.6化が一段落してまいりました。 PHP 5.6のリリースが2014年ですので今更感がありますが、「レガシーなPHPプロジェクトのバージョンアップに困っている」「使いたいライブラリーが5.3に対応してないからバックポートした」などという悲痛な声を目にしたこともあり、これからPHPのバージョンアップをされる方たちへのささやかな参考資料になればと思い、書かせていただきました。 さて、まずは本題に入る前に結果からお見せしようと思います。以下はNew Relic(アプリケーションのパフォーマンス監視サービス)のレスポンスタイムのグラフです。なおこのプロジェクトでは、ブラウザー表示用HTMLを出力するサーバー(Web 約10台)と、スマートフォンアプリ
PHPカンファレンス福岡2016の発表資料です。 この話は何回しても楽しいので再放送希望の方、お声がけください!
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く