php

279 件の記事

2012

ElephantJsを作りました

ElephantJs作りました。 Javascriptのクラスだとおもった? 残念、PHPのクラスでしたー(・∇・ ) ElephantJsはPHPからJavascriptを実行するためのクラスです。 動かすためにはV8jsが必要です。 ソースーコードはgithubに載っけてあります。 https://github.c…

ゆるかわPHPの会 #1

先月ノリでatndに登録したイベント「ゆるかわPHPの会 #1」を、弊社エクスクウェイドにて開催しました。 まあ僕が主催者だけあってそりゃもうぐだぐだした感じのイベントになってしまったわけです... ただ、弊社エンジニアの協力や、参加していただいた方々の協力もあって初めてにしては良いイベントになったのかと思います。 P…

かっこ良くPHPのエラーをだしてみる

PHPで開発してるとNoticeとかWarningとかのエラーが結構でることってありますよね。 僕もよくあります。 でもでも、やっぱイケてるCTOとして、部下にNoticeだとかWarningだとかのエラー出すのはかっこわるい訳ですよ。 こんな感じに... こんな画面じゃお嫁に行けないわ..ってぐらい恥ずかしいですね。…

phpのリダイレクトではまったこと。

phpを初めて使ってからもう6年経つ僕ですが、リダイレクト処理で勘違していたみたいです。 リダイレクトのヘッダを生成した瞬間僕は、phpの処理がとまると勘違いしておりました。 こんな感じに <?php // ...処理いろいろ if ( $isRedirect ) { header('Location: index.p…

MacBookProにSWFEditorをいれてみた(brew編)

以前はMacPorts使ってた僕ですが、最近はもっぱらbrew派です。 そんな僕ですが、やっぱりSWFEditorは使いたくなる訳です。 ところが今の僕のMacBookProにはSWFEditorには入っていません。 ということでインストールしようと思ったら、libpngが周りでトラブルが・・・・ wget "http…

cakephpのModel::setDataSource()メソッドについて

仕事で本来接続されるはずのないデータベースにcakePHPで作られたアプリからデータベースに接続来るなんともキモい現象が発生していました。 よく、アプリの接続先を本番環境と開発環境で切り分けたいとか、このサーバからはこのDBにしか接続したくないってときは、よくモデルのコンストラクタに以下のコードを書いて対応していること…

MySQLdbでTRUNCATE TABLE文を発行したら、commitされなかったでござるの巻き

本来TRUNCATEはトランザクションをサポートしてないのでcommitされないってのはおかしいですね。。。 すいません、無知なもので。。。 んでまあ前回の「mysqliでTRUNCATE TABLE文を発行したら、commitされなかったでござるの巻き」の続きなんですが、結局pythonでためしたところ同じ結果でした…

mysqliでTRUNCATE TABLE文を発行したら、commitされなかったでござるの巻き

PHPでのお話です。 マスター/スレーブまでカバーしたDBライブラリを使用しているときに、なぜかSELECTしたあとTRUNCATE文を発行したら、なぜか永遠に処理が終わらないという現象に遭遇しました。 SELECTはスレーブに接続して、INSERT,UPDATE,DELETEはマスターに接続するという単純なライブラリ…

foreachで無限ループする方法

なんかforeachなら絶対に無限ループなんかないと僕は思っていたわkです。 forじゃないんだから、無限ループになるわけなんかないでしょ。 って思っていた自分は死ねばいいと思います。マジで。 まあ無限ループというかメモリオーバーで落ちるだけなんですが、うっかり「memroy_limit = 12288M」とかしちゃう…

nginxでwordpressの表示を6倍速くしてみた

このブログをabで速度はかってみたら以下のような絶望的な結果が出ました(´・ω・`) Requests per second: 10.64 [#/sec] (mean) Time per request: 9399.835 [ms] (mean) Time per request: 93.998 [ms] (mean,…

var_dumpやdebug_print_backtraceをやめてconsole.logを使おう

phpの配列の中身を確認するときってvar_dump使って出力すると便利ですよね。 あとはdebug_print_backtraceなんかで中身を確認するとかも便利ですよね。 開発時にはよく使ったりしますが、htmlのレイアウト崩れたして不便だったり見にくかったりする場合も多々あるかと思います。 なんか良い解決策がない…

Xdebugいれてエラーをブラウザから見やすくする

開発環境には今や必須と言われているXdebug。 エラー時にstack traceみれるし、var_dumpも見やすくなりますね。 それになにより、リモートデバッガー使えるし、本当に便利かと思います。 まあ僕は4年ぐらい前まで理解できていなかったですがw 2ヶ月ほどの前から弊社では、エンジニア一人一人のPCでVM立ち上…

Redisでランキングを作ろうとしたんだ(完結編)

前回の「Redisでランキングを作ろうとしたんだ」で悩んでた部分が解決できました。 かばだんなさん様からのコメントをいただき、対応できました。 本当に感謝しています!! んでもって、結局こんな感じのコードになれば同一を含んだランキングが取得できるかと思います。 <?php $server = "localhost"; …

猿でもわかるクロージャ超入門5を読んでて、PHPでクロージャを書いてみたどうなるかなと思ったので書いてみました

ことの発端はゴールデンウィークだしまったり大好きなインターネットをしていたら、「JavaScriptで、もう連想配列の最後のカンマに悩まない!」をみていてたときに右下のメニューに「猿でもわかるクロージャ超入門 まとめ」という記事を発見してしまい見てしまったことが原因ですw 最近はPHP5.3での開発がほとんどなので、よ…

php-buildでphp build error: /usr/bin/ld: cannot find -lltdlと出た場合の対処方法

phpenv,php-buildはなかなか便利でとっても素敵なツールだと思います。 最近は仮想で用意したCentOSにphpenvとphp-buildつかってphpのバージョン切り替えようと思ったんですが、コンパイル最中になぜかエラーで停止してしまう現象が発生していました。 通常ならphp-buildのエラーログが/t…

array_mergeでのトラブル

なんかちょっとはまったのでメモしておきます。 PHPって配列がフリーダムな感じでとってもいい感じの言語だったりするわけです。 んで、良くやるのがユーザーIDとか一意なキーを配列のindexにしてあげるってやつね。 便利ですよね。例えばこんな感じの配列 <?php $a = array( 1 => array( 'nam…

cakePHPのmodelでFORCE INDEXを使用する方法

なんかうまくINDEXが使用されない箇所があって、たまにFORCE INDEXが使いたくなる事ってあると思います。 cakePHPだと、FORCE INDEXを書く方法が無いように見えますが、意外と簡単にFORCE INDEXを書く事ができます。 基本的にテーブル名の後ろに文字列入れられればいいので、実はjoinsに記…

cakePHPのmod_rewriteの設定

cakePHPで画像のリンク切れ起こしてた場合に、なぜか知らないけど、index.phpにリクエストがという現象が起きていました。 これがtopページとかで起きてた場合はもう最悪、、、、 何回もindex.phpが呼ばれるという怪奇現象が発生しておりました。 うーんおっかしぃなぁーとか思いつつ.htaccessの設定と…

array_unshiftの罠

久しぶりにarray_unshiftではまっていました。 というか、仕様をわすれてどうしようもない感じでした^^ えっと、やりたかったこととしては配列のキーをDBのテーブルのIDにしてvalueに項目を入れる配列を作ってました。 <?php $areas = array( 4 => '静岡', 3 => '清水', 8…

cakePHPでカラムに入れる値をシリアライズしたりする

cakePHPでカラムにシリアライズした値を入れたいときってたまにあると思います。 ただ、modelごととかメソッド毎にserialize/unserializeの処理をいれるのは結構めんどくさいと思います。 そんな時には以下のようにapp_modelに記述してあげれば、どのモデルからも簡単にシリアライズ処理が出来ると…

Zend_Queue_Adapter_Phpredisを作りました

Zend_QueueでRedisを使いたくなったので、Zend_Queue_Adapter_Phpredis作りました。 まあほぼmemcacheqのアダプターと構成は同じですがcountとかもちゃんとサポートできている感じです。 まあちゃんとテストも書いてないのでバグがあるかもしれませんが、良かったら使ってみてくださ…

macにmemcached.soを入れる

今使っているMacに入っているのがmemcache.soしか入ってなかった。。。memcache.soはあるんですが。 まあPECLでさっくり入れてしまえばいいと思っていたので普通にいれてみたんですね。 sudo pecl install memcache したらlibmemcachedがないと怒られました。。。 li…

cakePHP+Redisでpaginateする

最近Redisの凄さに感動を受けました。 memcachedと違ってセットとかリストとか使えるのとかもうヨダレがとまりません(^p^) リストがつかえるってことはcakeでページネートできちゃったら素敵すぎるってことで実装してみようと思った訳です。 基本的にModelにpaginateとpaginateCountを実装…

PHPで引数にcallback関数を渡す関数を作る

PHPで引数にコールバック関数を渡すメソッドや関数って沢山あると思います。 それらと同じような事を自分でつくるとしたらどうするのかなぁーとか考えてました。 どうやらPHPにはis_callableという関数があるらしくcall_user_funcと一緒に組み合わせて使えば簡単に作成することができます。 <?php fu…

array_walk_recursiveでクロージャを使う

PHP5.3からはクロージャが使えるようになったんですが、なかなか使う機会がなかったです。 というかクロージャの使いどころが未だに出来てない阿呆な僕だったりするわけです(´・ω・`) んでもまあそれでもやっぱ使い時もあるのでarray_walk_recursive関数でcallbackとしてクロージャでみたいなおしゃれ…