- 1 名前:nobodyさん mailto:sage [2009/04/06(月) 04:14:58 ID:???]
- 質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り 次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 82 pc11.2ch.net/test/read.cgi/php/1236532468/ ◆質問用テンプレ 【OS名】vine linux 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
- 232 名前:nobodyさん mailto:sage [2009/04/10(金) 17:33:36 ID:???]
- とりあえずその言葉使いはやめような
- 233 名前:nobodyさん mailto:sage [2009/04/10(金) 18:00:19 ID:???]
- 質問させてください。
レンタルサーバでcronを使って、2chを定期的に監視するプログラムを作ろうと思うのですが、 公開されているプログラムなどありませんでしょうか? スレ違いならすみません。
- 234 名前:nobodyさん mailto:sage [2009/04/10(金) 18:01:57 ID:???]
- キミが監視しなくてもすでに他の人が監視してるから大丈夫
- 235 名前:nobodyさん mailto:sage [2009/04/10(金) 18:23:48 ID:???]
- >>233
監視って具体的になにをするのね
- 236 名前:233 mailto:sage [2009/04/10(金) 18:44:10 ID:???]
- >>235
とりあえず自分のブログに盛り上がっているスレのリンクと、 先頭数レスの表示をしようと思ってます。
- 237 名前:nobodyさん mailto:sage [2009/04/10(金) 19:31:13 ID:???]
- >>236
専ブラ作るために公開されてる仕様があるのでそれ嫁ができます
- 238 名前:162 [2009/04/10(金) 20:32:35 ID:z5toBuCm]
- >>162 はやっぱりないですかね。
>>164 多分、質問の意味を理解されてません。
- 239 名前:nobodyさん mailto:sage [2009/04/10(金) 20:35:19 ID:???]
- flockしる
- 240 名前:nobodyさん mailto:sage [2009/04/10(金) 20:38:07 ID:???]
- >>239
flockとどういう関係が?
- 241 名前:nobodyさん mailto:sage [2009/04/10(金) 20:46:12 ID:???]
- 一時的に利用するためのファイルの名前にこだわる理由がわからない
- 242 名前:nobodyさん mailto:sage [2009/04/10(金) 20:48:58 ID:???]
- >>238
まず、自分がどうやってるか書いたら? 良い方法は?って言われてもな。 一意な名前を取得する方法なんて腐るほどあるっしょ。 インデックスを保持するファイルを一つ作っといて、そこで一意を確保してからrenameするとか すきなアルゴリズムにしたらいいよ
- 243 名前:nobodyさん mailto:sage [2009/04/10(金) 20:56:57 ID:???]
- >>233
akid.s17.xrea.com/ www9.atpages.jp/~perfume2ch/wiki/
- 244 名前:nobodyさん mailto:sage [2009/04/10(金) 21:06:39 ID:???]
- 連番でいいよもう
- 245 名前:nobodyさん mailto:sage [2009/04/10(金) 21:48:10 ID:???]
- forの中で関数呼び出しはPHPに限らず大抵の言語でもパフォーマンスが落ちる。
コンパイラや実行環境が最適化してくれる場合もあるし、大した差がつかないのは事実だけどな。 初心者がやってたら理解していない可能性を考えて訂正するのは正しい姿勢だと思うが。 >194-196, >204 ベンチマーク取るにしては処理が短すぎる。 そのくらいだとPC内のほかのタスクとかがノイズになって意味のある数字が出ない。 1秒とか10秒とかの単位で時間がかかるような規模の試験をした方がいい。
- 246 名前:nobodyさん mailto:sage [2009/04/10(金) 21:58:27 ID:???]
- 批判する前に自分もコードを出したらいいじゃん
- 247 名前:209 mailto:sage [2009/04/10(金) 22:19:41 ID:???]
- ログを見ても原因らしい原因が判りません。。。。
.forward "| /usr/bin/php /var/www/html/test2.php" test2.php #!/usr/bin/php -q <?php print "START"; system("touch hoge"); echo "end"; ?> maillog postfix/smtpd[3703]: connect from atg-asm1.t-com.ne.jp[218.219.54.53] postfix/smtpd[3703]: 2895E5DC486: client=atg-asm1.t-com.ne.jp[218.219.54.53] postfix/cleanup[3707]: 2895E5DC486: message-id=<004a01c9b9de$15f7cf10$0701a8c0@XXXXXX551ed45> postfix/qmgr[3669]: 2895E5DC486: from=<AAAAAAAAA@tba.t-com.ne.jp>, size=1594, nrcpt=1 (queue active) postfix/smtpd[3703]: disconnect from atg-asm1.t-com.ne.jp[218.219.54.53] postfix/local[3708]: 2895E5DC486: to=<YYYYYYYYYY@ZZZZZZZZ.homeip.net>, relay=local, delay=0, status=sent (delivered to command: /usr/bin/php /var/www/html/test2.php) postfix/qmgr[3669]: 2895E5DC486: removed
- 248 名前:nobodyさん mailto:sage [2009/04/11(土) 01:44:12 ID:???]
- パフォーマンス云々よりも
count()っていうのはループ中に値が変わる可能性があるわけで バグによってループする回数が変わってしまう危険性 っていうほうが避ける理由じゃないかな。。
- 249 名前:nobodyさん mailto:sage [2009/04/11(土) 01:48:10 ID:???]
- あと、上のほうにあったJavaScriptの話で
arr.lengthとfor(x in arr )を同じつもりで使うのは危ないよ。 例えばDOM使うと、forだと思ったとおりにならないときがあると思う。
- 250 名前:nobodyさん [2009/04/11(土) 02:13:44 ID:jaJ+Ur9l]
- httpヘッダのcontent-typeを取得したいのですが
送った、あるいは送る予定のheaderを取得するにはどうしたらいいですか?
- 251 名前:nobodyさん mailto:sage [2009/04/11(土) 02:28:50 ID:???]
- jp2.php.net/manual/ja/function.headers-list.php
- 252 名前:nobodyさん mailto:sage [2009/04/11(土) 02:36:37 ID:???]
- こんな関数あったんですね
ありがとうございました。
- 253 名前:nobodyさん mailto:sage [2009/04/11(土) 02:55:15 ID:???]
- headers_listって自分で設定したヘッダしか取得できないんですね
デフォルトで送る予定のContent-Type: text/http等は 決めうちで取得させるしかないですか?
- 254 名前:nobodyさん [2009/04/11(土) 05:24:48 ID:HAu5s/9P]
- ファイルアップロードに関する質問なのですが、
$_FILEのtypeは信用できないということを聞いたので、 別の方法で取得するようにしたのですが、 その他のname、size、errorなどは信用してもよいのでしょうか? nameなどはエスケープ処理などする必要がありますか? よろしくお願いします。
- 255 名前:nobodyさん mailto:sage [2009/04/11(土) 05:49:24 ID:???]
- >>247
それで、hogeは出来てないんだよね? 次はerror_log書いて、PHPのログをチェックかな
- 256 名前:nobodyさん mailto:sage [2009/04/11(土) 06:24:24 ID:???]
- >>245
>1秒とか10秒とかの単位で時間がかかるような規模の試験をした方がいい。 そこまで両者に差が出るとは思えないし そんな結果が出るまでやるとなるとメモリが足りなくなるでは? できるならぜひベンチ結果をみてみたいが というかそんな規模のものPHPじゃ作らないだろうし杞憂な気もするけど・・・ >>248 >count()っていうのはループ中に値が変わる可能性があるわけで >バグによってループする回数が変わってしまう危険性 だいたいこういう処理は配列を1つずつ取り出す場合に使うのであって 対象の配列数が変わるような処理をやるほうがおかしいのでは? 具体的にどのようなことをするのか検討もつかないけど・・・ バグによってループ回数が変わるっていうのも意味不明 >>183もナイワと批判を書くのではなくて 外におけばPHPではパフォーマンスがあがるという注釈をつければここまで伸びなかった
- 257 名前:nobodyさん [2009/04/11(土) 06:53:18 ID:/nX8neeQ]
- PDOのマニュアルには失敗した時の動作が、書かれてないんですが、
このあたりはドライバ依存ってことなんでしょうか? jp.php.net/manual/ja/pdo.query.php jp.php.net/manual/ja/pdo.exec.php 例外で処理するのか戻り値で処理するのか、イマイチわかりません。 とりあえず、今使ってるSQLiteでは戻り値で判断できるみたいですが、ちょっと不安だなぁと言うことで。
- 258 名前:nobodyさん mailto:sage [2009/04/11(土) 07:09:52 ID:???]
- >>257
PDO用の例外があるでしょ PDOExceptionだったかな
- 259 名前:nobodyさん mailto:sage [2009/04/11(土) 07:17:24 ID:???]
- >>257
失敗しても気にするなよ。諦めたらそこで試合終了だよ
- 260 名前:nobodyさん mailto:sage [2009/04/11(土) 07:18:25 ID:???]
- >>258
でたらめなSQL書いてqueryしても例外でないんですよ。 で、戻り値はfalse ちなみに環境は PHP5.2.9 とWindows版にバンドル版されてるSQLite です。
- 261 名前:nobodyさん [2009/04/11(土) 07:22:23 ID:YDJbdlsq]
- 基本的なことだと思うのですが、
<?php $a .= "あ" . "い" . "う" ; $b .= "あ"; $b .= "い"; $b .= "う"; echo $a."<br><br>".$b; ?> の結果は同じになると思いますが、 少し複雑に変数やループ処理を入れたときに、 なぜか$aの方の"あ"の部分が消えてしまいます。 しかし、$b方式だと成功します。 >少し複雑に変数やループ処理を入れたときに、 を詳しく説明したいのですが、コードが長く、 まとめるにも上手く伝える術が見つかりませんでした。 簡易に説明すると、 データを参照して、何ページかを判断して、 リンク付きのページ番号をずらっと表示させるようなプログラム部分になるのですが、 どうして$aではできないのに$bだとできるのか疑問に思いました。 何か心当たりありましたらよろしくお願いします。
- 262 名前:nobodyさん [2009/04/11(土) 07:25:34 ID:YDJbdlsq]
- 追記
ループ処理した$aを、 クラスの変数、private $a; に格納していって、function get_a(){return $this->a;} の、get_a()メソッドで参照したときに問題が起こりました。 phpは5.2.6です
- 263 名前:nobodyさん mailto:sage [2009/04/11(土) 08:31:57 ID:???]
- コードが長けりゃどこかにうpすればいいのに
- 264 名前:247 mailto:sage [2009/04/11(土) 09:40:31 ID:???]
- >>255
error_logはsystemの戻り値の判定のところに書けばいいの?
- 265 名前:nobodyさん mailto:sage [2009/04/11(土) 10:03:46 ID:???]
- とりあえず、どこまで出来てるのか確認するのが基本
だから、<?phpの後でいいんじゃね?
- 266 名前:247 mailto:sage [2009/04/11(土) 10:37:14 ID:???]
- エラーログを吐き出すようにしてみました。
単体でtest2.phpを動かすとログを出しますが、 メールを介して動かしてもログが吐き出されませんでした。 maillog (delivered to command: /usr/bin/php /var/www/html/test2.php) .forward "| /usr/bin/php /var/www/html/test2.php" test2.php #!/usr/bin/php -q <?php error_log("テストエラー",0); system("touch hoge"); ?>
- 267 名前:247 mailto:sage [2009/04/11(土) 10:48:01 ID:???]
- forwardでコマンドは実行されているみたいですがtest2.phpは動いていない。
・.forwardの中が間違っている。→/usr/bin/phpは存在する。 →/var/www/html/test2.phpでtest2.phpを 動かせる。 ・パーミッションが間違っている。→.forwardを600 test2.phpを705or755 あと考えられる事象はなんでしょうか。
- 268 名前:nobodyさん mailto:sage [2009/04/11(土) 11:22:57 ID:???]
- >>267
ディストリは何使ってるんだ? それがわかれば同じ環境作ってやってみるけど
- 269 名前:nobodyさん mailto:sage [2009/04/11(土) 11:32:38 ID:???]
- >>267
.forward "| /usr/bin/php -q /var/www/html/test2.php" にしてみ
- 270 名前:nobodyさん mailto:sage [2009/04/11(土) 11:35:55 ID:???]
- .forward
"| /var/www/html/test2.php" うちは、これで動くけど?
- 271 名前:nobodyさん mailto:sage [2009/04/11(土) 11:59:26 ID:???]
- まず
"| touch /tmp/hoge" ってやってみて処理してるユーザ名を把握してはどうだろう
- 272 名前:247 mailto:sage [2009/04/11(土) 12:15:02 ID:???]
- >>267
ディストリというのは環境という意味でいいのかな? PHP 5.0.4kfedoracore4です。 >>269 >>270 試してみました。 >>271 suxxxxxxxのユーザーの空ファイルとなりました。 ……test2.phpはroot。……まさか。。。
- 273 名前:261 [2009/04/11(土) 12:15:24 ID:YDJbdlsq]
- ありがとうございます
自己解決しました。 実際は、 $a .= "あ" . $i+1 . "う" ; という風に、”い”の部分は計算式をいろいろと入れていたのですが、 その計算式を()でくくって $a .= "あ" . ($i+1) . "う" ; のようにしたら、できました。
- 274 名前:247 mailto:sage [2009/04/11(土) 12:23:05 ID:???]
- >>271
作成されたファイルhoge -rw------- 1 suXXXXXXX suXXXXXX 0 4月 11 08:36 hoge .forward -rw------- 1 suXXXXXXX suXXXXXXX 20 4月 11 08:35 .forward test2.php -rwx---r-x 1 root root 112 4月 11 08:02 test2.php ごく。
- 275 名前:nobodyさん [2009/04/11(土) 12:35:09 ID:jPW674z3]
- グローバル変数はまったく使わないほうがいいのでしょうか?
- 276 名前:nobodyさん mailto:sage [2009/04/11(土) 12:43:26 ID:???]
- うん
スーパーグローバルは使うけど
- 277 名前:nobodyさん mailto:sage [2009/04/11(土) 13:12:41 ID:???]
- スーパーグローバルは便利だが、テストしにくくなる。
モジュールごと、クラスごとにテストを書かないといけないような、ややっこしいコードを作る時は避けた方がいい。 グローバル変数は使うべきではない、とされている。 これは、グローバル変数はどこでどう値が変えられるか分からないのが最大の理由。 ある時点でグローバルに何が入っているかは、プログラムの最初から最後まで全部読まないと分からない。 不具合発生時に原因を特定しづらいし、機能追加時などにどの時点でどの変数がどうなってるか分かりづらくなる。 いっぽう、一時変数は、その関数の中で生成され、その関数が終わったら消えるので、その関数の中だけ見れば値が分かる。 グローバルに依存しない関数は、同じ引数を渡せば同じ結果が常に返って来る。 プログラムのどこで呼ばれても(引数が同じならば)同じ結果が返る事が保証されているので、バグの原因を探しやすい。
- 278 名前:247 mailto:sage [2009/04/11(土) 14:11:26 ID:???]
- ディレクトリィのパーミッションを777に変えてたら
test2.phpまで届いてログが出るようになりました。 ですが、system("touch hoge")が実行されず まだ空ファイルが作られない状態です。
- 279 名前:nobodyさん mailto:sage [2009/04/11(土) 14:16:55 ID:???]
- file_put_contents("/tmp/hoge.txt", realpath("."));を書いてみて、
カレントディレクトリを把握してはどうだろう。そしたらパーミッションを確認してと・・
|

|