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等)・フレームワークは各該当スレへ
51 名前:nobodyさん [2009/04/06(月) 23:06:56 ID:5SFFX38L] php.iniでタイムゾーンを設定しなかった場合、 何を基準で時刻が表示されるのですか?
52 名前:47 mailto:sage [2009/04/06(月) 23:07:37 ID:???] >>48 ありがとうございます
53 名前:nobodyさん mailto:sage [2009/04/06(月) 23:11:19 ID:???] >>49 簡単な例が出てる。 jp2.php.net/manual/ja/language.exceptions.php
54 名前:nobodyさん mailto:sage [2009/04/06(月) 23:12:17 ID:???] >>51 jp2.php.net/manual/ja/datetime.configuration.php#ini.date.timezone jp2.php.net/manual/ja/function.date-default-timezone-get.php
55 名前:nobodyさん [2009/04/06(月) 23:18:12 ID:qkQqSy3E] phpの環境構築の質問です windowsです php5.2.9を一個インストールしました apacheを3つ(1.3と2.0と2.2)インストールしました apacheを三つ起動してphpを動かすことはできますでしょうか?
56 名前:nobodyさん mailto:sage [2009/04/06(月) 23:19:35 ID:???] ポートをきちんと分ければいけるんちゃう?
57 名前:nobodyさん mailto:sage [2009/04/06(月) 23:19:38 ID:???] >>55 できるよ
58 名前:nobodyさん [2009/04/06(月) 23:23:18 ID:tZqDzIhT] 以下のようなコメントはダメって言われたのですが不具合はありませんでした なぜだめなのでしょうか? <?php /* echo 'テストです'; /* このコメントが問題を生じます */ */ ?>
59 名前:nobodyさん mailto:sage [2009/04/06(月) 23:26:28 ID:???] >>58 ダメだからじゃないの? jp.php.net/manual/ja/language.basic-syntax.comments.php
60 名前:nobodyさん [2009/04/06(月) 23:26:33 ID:LvefCDF1] $fopen = fopen("textfile.txt","w")って書き方を知りました $fopenにはリソースが入るらしいんですが、このことについてご教示お願いします fopenで読み込んだファイルはメモリに読み込まれるということでしょうか? ということはfcloseをしたら情報はメモリから消えるということになるのでしょうか?
61 名前:nobodyさん mailto:sage [2009/04/06(月) 23:28:35 ID:???] これも仕様上正しい書き方になるわけだもんな /* /* echo 'テストです'; */
62 名前:nobodyさん mailto:sage [2009/04/06(月) 23:33:04 ID:???] 時々、正規表現中の */ とかぶってパニクる。
63 名前:nobodyさん mailto:sage [2009/04/06(月) 23:34:24 ID:???] >>60 jp.php.net/manual/ja/function.fopen.php
64 名前:nobodyさん mailto:sage [2009/04/06(月) 23:35:05 ID:???] $foo = 5 + "10 Little Piggies"; 公式でこれ$fooが整数らしいんですけど何故ですか? 公式が間違えてるのでしょうか?
65 名前:nobodyさん mailto:sage [2009/04/06(月) 23:36:08 ID:???] >>64 >>1
66 名前:nobodyさん mailto:sage [2009/04/06(月) 23:40:16 ID:???] ビット演算子の勉強をしています $strに含まれる文字列を1bit右にずらしたいのですが思う通りの結果になりません どなたかご教示お願い致します $str ="abcde"; echo $str ^ 1;
67 名前:66 [2009/04/06(月) 23:41:03 ID:PTpMIEWr] ID出し忘れました 申し訳ございません
68 名前:nobodyさん mailto:sage [2009/04/06(月) 23:43:47 ID:???] >>66 なんでXOR取ってるのか分からん jp2.php.net/manual/ja/language.operators.bitwise.php
69 名前:nobodyさん mailto:sage [2009/04/06(月) 23:48:01 ID:???] 俺がマジレスしてやると echo $str >> 1;
70 名前:nobodyさん mailto:sage [2009/04/07(火) 00:07:56 ID:???] ここまでの質問は全部おれの自演 お陰で勢いが80超えた^^
71 名前:nobodyさん mailto:sage [2009/04/07(火) 03:19:34 ID:???] なぜにIDを出して質問をしなくちゃいけないのか 甚だ疑問。 >>1 は死ね
72 名前:nobodyさん mailto:sage [2009/04/07(火) 06:14:03 ID:???] 出さなくていいほうがあるんだからそっちいけカス
73 名前:nobodyさん [2009/04/07(火) 14:08:44 ID:4/ZzdyJu] PHPで作成したWEBシステムで、独自に吐かせているログをlogrotateしたいのですが、 PHPはapacheのモジュールとして動いているので、現在のapacheで運用されている # cat /etc/logrotate.d/httpd ------------------------------ /var/log/httpd/*log { missingok notifempty sharedscripts postrotate /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true endscript } ------------------------------ と同じものは書かなくても良いのですよね? 以下のもので大丈夫でしょうか? # vi /etc/logrotate.d/mysytem ------------------------------ /var/log/mysystem/systemlog { missingok } ------------------------------
74 名前:nobodyさん mailto:sage [2009/04/07(火) 14:47:40 ID:???] >>73 ディストリは何使ってるんだ?それによって答えが若星変わる
75 名前:nobodyさん [2009/04/07(火) 16:31:53 ID:4/ZzdyJu] >>74 ありがとうございます。 Red Hat Enterprise Linux ES release 3 です。
76 名前:nobodyさん mailto:sage [2009/04/07(火) 16:35:07 ID:???] >>75 ああ、RHか 企業参入後のそれは使ったことないから控えとくわ
77 名前:nobodyさん mailto:sage [2009/04/07(火) 16:38:40 ID:???] >>73 ディストリとか関係ないからw /etc/logrotate.d/httpd にログファイルのパスを追加するだけ。
78 名前:nobodyさん [2009/04/07(火) 17:30:41 ID:4/ZzdyJu] >>77 あ、そっか。。 ありがとうございます! # vi /etc/logrotate.d/httpd ------------------------------ /var/log/httpd/*log /var/log/mysystem/systemlog { missingok notifempty sharedscripts postrotate /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true endscript } ------------------------------
79 名前:nobodyさん mailto:sage [2009/04/07(火) 17:35:09 ID:???] >>77 覚えたてで使いたかったんだろ。
80 名前:nobodyさん mailto:sage [2009/04/07(火) 19:57:49 ID:???] 質問初心者クンはここを見て質問の仕方を覚えてこい ttp://www.gekiura.com/guest/m0005418.html
81 名前:nobodyさん mailto:sage [2009/04/07(火) 20:12:36 ID:???] >>80 注意
82 名前:nobodyさん [2009/04/07(火) 21:57:01 ID:nY33/bGj] csvファイルAからcsvファイルBへ特定の行だけを移動したいと思ってます。 チェックボックスで選ばれた行をAから削除しBへ書き込むプログラムを 色々考えたのですがさっぱり検討もつかず1週間経ちます どうかヒントだけでもいいので教えてください。
83 名前:nobodyさん mailto:sage [2009/04/07(火) 22:09:02 ID:???] ファイルを2つ同時に開いて出したり入れたり
84 名前:nobodyさん mailto:sage [2009/04/07(火) 22:11:16 ID:???] csvのカラム構造はどうなってるのさ 一意なキーがあればあとは簡単だと思うが
85 名前:nobodyさん mailto:sage [2009/04/07(火) 22:58:39 ID:???] ttp://wikiwiki.jp/web/ 一応、一問一答でwikiにためてたりスレのテンプレを記録するために借りてみた 一緒に更新お願いします PHP用のwikiってことでお願いします ページ下部のアフィは勝手についたもので俺には1円も入らないから気にしないで下され
86 名前:nobodyさん mailto:sage [2009/04/07(火) 22:59:22 ID:???] いや自分が更新しろや
87 名前:nobodyさん mailto:sage [2009/04/07(火) 23:03:12 ID:???] wikiのタイトルを「PHPの事はここ見やがれ」したら受けそう
88 名前:nobodyさん mailto:sage [2009/04/07(火) 23:15:48 ID:???] 下らねぇ質問はここ見やがれ でいいじゃん
89 名前:nobodyさん mailto:sage [2009/04/07(火) 23:17:18 ID:???] 編集の仕方がわからない><
90 名前:nobodyさん [2009/04/08(水) 03:33:41 ID:0hFuJwMz] 別の板できいたらスレチだったのでここで質問します 変数の中に入ってる文字列をファイル名として 変数.txtとか変数.jpgのようにあらわすにはどうすればいいのでしょうか?
91 名前:nobodyさん mailto:sage [2009/04/08(水) 03:51:35 ID:???] >>90 $x = "hogehoge"; echo "$x.txt"; jp.php.net/manual/ja/language.types.string.php#language.types.string.parsing
92 名前:nobodyさん mailto:sage [2009/04/08(水) 08:18:56 ID:???] $x.'.txt'; どっちがいいんだかいつも迷う
93 名前:nobodyさん [2009/04/08(水) 11:11:24 ID:r8DEvZ6R] whileでもforでもどちらでも繰り返しの表現ができるときは、 特にこだわりなくforでやってても問題ないでしょうか? ○○な理由で、できる限りこっちでやったほうがいいみたいなことないですかね。 よろしくお願いします。
94 名前:nobodyさん mailto:sage [2009/04/08(水) 11:13:40 ID:???] $x.'.txt'; だと、エディタが変数の色代えてくれるけど、 設定で"の中の$も代えてくれるかもしれん
95 名前:nobodyさん [2009/04/08(水) 12:55:37 ID:cjj/9xGO] すみませんが、質問です。 リクエストパラメータが正の整数であるかどうかをチェックしたいのですが、 どういう方法が良いでしょうか? is_int()は使えませんが、is_numeric()も良くなくて、結局 preg_match()を 使うしかないのでしょうか? (参考)PHPと16人の仲間達 : is_numeric は・・・なぁ php16.exblog.jp/4720976/
96 名前:nobodyさん mailto:sage [2009/04/08(水) 13:12:20 ID:???] 頻出すぎて萎える
97 名前:nobodyさん mailto:sage [2009/04/08(水) 13:16:37 ID:???] >>95 試してないけどこれは? $s = チェックする値 if($s<0)echo "負の数です";
98 名前:nobodyさん mailto:sage [2009/04/08(水) 13:16:47 ID:???] pregだと数値か文字列か判別できんだろ
99 名前:95 [2009/04/08(水) 13:45:02 ID:cjj/9xGO] ちょっと質問を補足します。 あるリクエストパラメータが、通常の正の整数(の文字列化)になっているか を判別したいのです。 リクエストパラメータは文字列ですから、is_int()は使えません。 is_numeric()はある程度使えますが、"+0123.45e6"もtrueになってしまいます。 ・trueとなってほしい値。 "1", "0001", "132", etc... ・falseとなってほしい値 "0", "-1", "1.0", "0xFF", "+0123.45e6", etc... これにかなうのは、 preg_match('/^\d*[1-9]$/', $param) しか思いつかないのですが、他に何か良い方法はないでしょうか?
100 名前:nobodyさん mailto:sage [2009/04/08(水) 13:48:37 ID:???] >>99 それ、間違ってるだろ。とりあえず。 preg_match('/^[1-9]+\d*$/D', $param)
101 名前:nobodyさん mailto:sage [2009/04/08(水) 13:49:06 ID:???] "+1"はどうなのよ"+0"はどうなのよ
102 名前:95 [2009/04/08(水) 13:56:41 ID:cjj/9xGO] >>100 それは >>99 の "0001" が trueになりませんし、 "0"がtrueになってしまいます。 >>101 どちらもfalseです。trueになるのは"正の整数"と>>95 ,>>99 で書いています。 あと、符号を含むものはfalseのつもりでした。 しかしこの流れだと、正規表現以外なさそうですね。
103 名前:nobodyさん mailto:sage [2009/04/08(水) 14:01:54 ID:???] ちょっとPHPカテゴリを辿ってみたけど php16.exblog.jp/6067489/ 【結果】 strpos = 1.4秒 preg_match = 7.0秒 ・・・あー・・・結構違いますね・・・。 寝ます。 php16.exblog.jp/4940100/ 上記の結果は・・・ "1234" の出力になります。("1212"じゃなく) つまり、static宣言した変数の値は メソッド呼び出し元のインスタンスが変わっても保持されています。 なんでこうなってんだろう? とか言ってるレベルの奴のblogだぞ?
104 名前:95 [2009/04/08(水) 14:13:53 ID:cjj/9xGO] >>103 引用したページが私の質問の意図をうまく説明するものだったので貼りました。 他のページが全部間違いでも問題ないと思います。
105 名前:nobodyさん mailto:sage [2009/04/08(水) 14:15:08 ID:???] is_numeric って is_numeric("0xFF"); // 16進表記 や is_numeric("+0123.45e6"); // 指数表記 をTRUEとしてしまうようです。(マニュアルに書いてありますけどね) マニュアルに書いてあるんじゃん
106 名前:nobodyさん mailto:sage [2009/04/08(水) 14:16:58 ID:???] >>95 それ10の倍数だとfalseだけど。 ctype_digit($param) && $param > 0 でいいんじゃないの。
107 名前:95 mailto:sage [2009/04/08(水) 14:24:10 ID:???] >>106 ご指摘のバグは今さっき気づいたところです。 > ctype_digit($param) && $param > 0 まさに望みどおりのものです。ありがとうございます。
108 名前:95 [2009/04/08(水) 14:24:40 ID:cjj/9xGO] あ、下げてしまった。>>107 は私です。では失礼します。
109 名前:nobodyさん mailto:sage [2009/04/08(水) 14:44:33 ID:???] 何か俺が作るサイトはデザインが自分でも悪い。 何かみてくれをよくするテクニックを纏めたオススメの書籍はありますか?
110 名前:nobodyさん mailto:sage [2009/04/08(水) 15:09:24 ID:???] 認識してるのにデザインが悪いと思うってことはなにかと比べてるからだと思うが その比べてるデザインの優れたと思うものを真似してみればどうだろう 好みなんて人それぞれだし万人が好むと思って押し付けても違ったりするから
111 名前:nobodyさん mailto:sage [2009/04/08(水) 15:23:02 ID:???] デザインは板違いじゃないか?
112 名前:nobodyさん mailto:sage [2009/04/08(水) 15:31:12 ID:???] >>109 いくらみてくれはよかっても、アフィをみてほしいのか記事(内容)をみてほしいのか 意味不明なサイトじゃなきゃ問題ない。 もちろん見た目は大事だけど内容と見易さ(使いやすさ)だよ。
113 名前:nobodyさん mailto:sage [2009/04/08(水) 16:59:27 ID:???] >>109 このスレではPHPの文法以外のことを聞いても、あんまり答えは返ってこない。 悪いこと言わないから、この辺↓に移動して聞きなおしたほうがいいと思うよ。 Webサイト制作初心者用質問スレ Part 208 pc11.2ch.net/test/read.cgi/hp/1238669869/
114 名前:nobodyさん mailto:sage [2009/04/08(水) 17:31:21 ID:???] >>107 バグて。 仕様だろ。
115 名前:nobodyさん [2009/04/08(水) 17:39:59 ID:9xKyaeca] SQLとファイル、どっちをデータ保存に使うか?ってよく出る話題ですが、 たとえばチャットシステムのように 数秒単位でデータの挿入、更新、削除が行われる場合ってどっちがいいんでしょうか。 どっちでも扱いやすいほうで、構いませんか?
116 名前:nobodyさん mailto:sage [2009/04/08(水) 17:42:13 ID:???] パフォーマンス計ってみればいいじゃん
117 名前:nobodyさん mailto:sage [2009/04/08(水) 18:13:22 ID:???] 好きな方でいいよ
118 名前:nobodyさん mailto:sage [2009/04/08(水) 18:20:30 ID:???] >>110 >>112 サンクス 先ずは、見易さ第一に作り次に自分が綺麗と思うサイトのHPのデザイン を真似する事から始めます。 ※真似されたHPの管理人は怒るかもしれませんが。
119 名前:nobodyさん mailto:sage [2009/04/08(水) 20:24:35 ID:???] チャットでパフォーマンスが気になるなら共有メモリとかにした方がいいんじゃないの。 使ったことないけど。
120 名前:nobodyさん mailto:sage [2009/04/08(水) 22:25:24 ID:???] >使ったことないけど
121 名前:nobodyさん mailto:sage [2009/04/08(水) 22:26:15 ID:???] >>115 俺の意見だと、ファイル保存が良いと思う。 アクセス解析作るのに使っている。 ただ、扱いやすいとは言えない
122 名前:nobodyさん [2009/04/08(水) 23:16:49 ID:tkomkeAN] 取得したいページをfile_get_contentsで取りたいのですが、 url先とは違う内容が$fileに入ってしまいます 関数一覧のページなんですがどのようにしてしっかり取得することができるのでしょうか? <?php $file = file_get_contents("jp.php.net/manual/ja/indexes.php ";); echo $file; ?>
123 名前:nobodyさん mailto:sage [2009/04/08(水) 23:33:25 ID:???] はい?違う内容って?
124 名前:nobodyさん [2009/04/09(木) 00:04:47 ID:m7XTC3qO] 【OS名】linux 【PHPのバージョン】php5.2.5 【質問内容】 文字列の中から英数字の部分だけを抽出したい場合は、どうやればいいでしょうか? $str = 'あああaaa_いいいiii_ううう-20090401'; : echo $result; // aaaiii20090401 と表示される ereg("[a-zA-Z0-9]+", $str, $regs); $result = $regs[0]; echo $result; だと「aaa」しか取得できませんでした。
125 名前:nobodyさん mailto:sage [2009/04/09(木) 00:35:29 ID:???] >93 基本は、ループの頭に差し掛かった時点でループ回数が分かる場合はfor。 ループを回してみないと分からない場合はwhile。 whileの場合はループ変数がどう変わるかを意識しながらコードを読まなければいけない。 forならば基本的にループ回数はループに入る時点で分かるので、ラクに読める。 ただまあ、例外はいっぱいある。 「1000以下の3の倍数を全て列挙」なんて場合、事前にループ回数を調べる事はできる。 だけど、「変数が1000を超えるまで繰り返す」という意図ならば、それを反映してwhileで書いた方が読みやすいわけで。 一般論にするなら、自分の意図がもっとも読者に伝わりやすい表現を選べ、という事になる。
126 名前:nobodyさん mailto:sage [2009/04/09(木) 01:26:24 ID:???] >>91 、>>92 、>>94 ありがとう、それでよかったんですね。
127 名前:nobodyさん [2009/04/09(木) 02:12:40 ID:8Md27rPN] [とか]ってURLエンコードする必要ありますか? ある文字がURLエンコードするべきかどうかってどうやって判断すればよいでしょうか? 初心者的な質問ですいません。。。
128 名前:nobodyさん mailto:sage [2009/04/09(木) 02:19:15 ID:???] >>127 ja.wikipedia.org/wiki/URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89
129 名前:nobodyさん mailto:sage [2009/04/09(木) 03:11:40 ID:???] >>127 RFC1738とその関連文献を見るといいよ
130 名前:nobodyさん mailto:sage [2009/04/09(木) 05:12:24 ID:???] グーグルランクをPHPで取得する方法がわかりません
131 名前:130 [2009/04/09(木) 05:15:38 ID:sBmn/pA0] グーグルランク取得したいです。PHPで でも、その方法が調べてもわからないんです PHP暦は一年でそこそこです
132 名前:124 mailto:sage [2009/04/09(木) 08:53:26 ID:???] >>130 詳しく見てないけど、結構情報があるみたいですよ Google rank 取得方法 の検索結果 約 321,000 件 www.xdelta.net/blog/FreeBSD/2006/01/31/p134 Googleのページランクを知りたい場合は、対象となるURLとともに、そのURLのch値といわれるチェックサムが、Googleに問い合わせする際、必要になる。 ch値の算出方法については、しばらく謎とされてきたが、 Google PageRank Checksum Calculator で、そのアルゴリズムが公開されてる。 mlog.euqset.org/archives/php-users.php.gr.jp/33290.html [PHP-users 33290]スクリプトでのGOOGLE pagerank取得について (続) ○ クラスに書き直したソースコードを公開しました デモ linux.ohwada.jp/demo/google_pagerank/ 説明 linux.ohwada.jp/modules/smartsection/item.php?itemid=397 ダウンロード linux.ohwada.jp/modules/wfdownloads/singlefile.php?cid=8&lid=98 ↑この「説明」ページに、PHPでGoogle Rankを取得する方法が解説されていました。
133 名前:nobodyさん mailto:sage [2009/04/09(木) 09:01:18 ID:???] >>124 preg_match_all("/[a-zA-Z0-9]+/", $str, $regs); $result = implode("",$regs["0"]);
134 名前:nobodyさん mailto:sage [2009/04/09(木) 09:03:14 ID:???] 正規表現(笑)
135 名前:124 mailto:sage [2009/04/09(木) 09:12:16 ID:???] 自己解決しました。 $str = 'あああaaa_いいいiii_ううう-20090401'; preg_match_all("([a-zA-Z0-9]+)", $str, $matches); $regs = $matches[0]; foreach($regs as $reg) { $result .= $reg; } echo $result; どうもありがとうございました>>124
136 名前:124 mailto:sage [2009/04/09(木) 09:14:20 ID:???] >>133 implodeを使えば良いんですね! どうもありがとうございます。
137 名前:124 mailto:sage [2009/04/09(木) 09:19:33 ID:???] >>134 正規表現(涙)は、一度本を読んだんですが、頭に入らないです>< 誰かチートシート(早見表)を作って配布してくれないですかね? …てか、言いだしっぺ=自分で叩き台を作って、ここで添削してもらえばいいかな?
138 名前:124 mailto:sage [2009/04/09(木) 09:44:05 ID:???] PHPの正規表現は、 (1) Perl互換の正規表現 jp.php.net/manual/ja/book.pcre.php (2) POSIX拡張の正規表現 jp.php.net/manual/ja/book.regex.php の2種類が用意されてるんですね。 ↓Perl互換の正規表現(PCRE)のチートシートは配布されてました。 phpspot.org/blog/archives/2006/07/phppcre.html ↓チートシートじゃないけど、正規表現で使えるパターンのまとめ www.rider-n.sakura.ne.jp/regexp/regexp.php PHPのマニュアルでは処理速度が違うとあったけど、それぞれ一長一短があるのでしょうか? =使い分ける場合の基準はあるのかな? php-web.net/regular/posix.html PHPでは、Posix拡張正規表現を利用することができます。 Posixとは、Portable Operating System Interface for UNIX の略で、 Linux を始めとする Unix 互換OSが満たすべき仕様を定めたものです。 Perl互換正規表現よりも機能は限定されていますが、汎用性は高いです。 POSIX互換正規表現<PERL互換正規表現ということで、簡単に済む場合はPOSIX、複雑な場合はPCREの出番になるのかな? 正規表現でうまく処理できない場合は、ANTLRという文字処理のライブラリを使えばいいそうですけど、PHPでANTLRが使えるライブラリとか配布されているんでしょうか? pg.thumbnailcloud.net/data/frame_252694.aspx
139 名前:nobodyさん [2009/04/09(木) 10:21:07 ID:3wJSGAQj] mkdirでディレクトリを作成する時、開発環境(WinXP)では簡単に作成されますが、 ネットのLinuxサーバ上ではパーミッションの問題で作成出来ない場合があります。 その場合、「パーミッションエラーで作成できない」事を 伝える必要があると思うのですが、そう言うことを調べる関数ってあるのでしょうか?
140 名前:nobodyさん mailto:sage [2009/04/09(木) 10:32:12 ID:???] やったことないけどディレクトリを作成する親でぃれくとりがis_executableかどうかでできないかな
141 名前:nobodyさん mailto:sage [2009/04/09(木) 10:37:10 ID:???] >>139 レンタルサーバだと、モジュール版のPHPがセーフモードに設定されていることが原因で、mkdirの利用が制限されている場合もありますね。 jp.php.net/manual/ja/function.mkdir.php 返り値 成功した場合に TRUE を、失敗した場合に FALSE を返します。 ↑mkdirの返り血(FALSE)を浴びるだけではダメですか?
142 名前:139 [2009/04/09(木) 11:15:45 ID:3wJSGAQj] >>140-141 つまり、単純に if(!mkdir("test")){ die("ディレクトリが作成できませんでした。パスかパーミションを確認して下さい。"); } みたいな感じで良いですかね?
143 名前:nobodyさん [2009/04/09(木) 12:52:32 ID:GoKaiEbv] vistaでphp5.2.8とapache2.2使ってます ローカルの特定のファイルをfile_get_contentsで取得したいのですが 以下ではfailed to open streamで開けませんでした $filenameをlocalhost/index.html から127.0.0.1/index.html $filename = "localhost/index.html "; $file = file_get_contents($filename); echo $file; q.hatena.ne.jp/1202255873 を見てhostファイルが原因だと思うのですが どのようにhostファイルを書き換えればよろしいでしょうか?
144 名前:nobodyさん [2009/04/09(木) 12:53:27 ID:GoKaiEbv] すいません4行目途中でした 全文修正版です↓ vistaでphp5.2.8とapache2.2使ってます ローカルの特定のファイルをfile_get_contentsで取得したいのですが 以下ではfailed to open streamで開けませんでした $filenameをlocalhost/index.html から127.0.0.1/index.html に直すと取得できました $filename = "localhost/index.html "; $file = file_get_contents($filename); echo $file; q.hatena.ne.jp/1202255873 を見てhostファイルが原因だと思うのですが どのようにhostファイルを書き換えればよろしいでしょうか?
145 名前:nobodyさん [2009/04/09(木) 12:59:56 ID:pGRnXLlI] 以下のような多次元配列があります これを1次元に直したいのでforeachを使いました $ary[0][0]=1; $ary[0][1]=2; $ary[0][2]=3; $ary[0][3]=4; $ary[0][4]=5; $ary[0][5]=6; foreach($ary as $v) { foreach($v as $vv) $h[] = $vv; } 標準関数か何かでこれよりもスマートなやり方があった記憶があるのですがどなたかご教示お願い致します
146 名前:nobodyさん mailto:sage [2009/04/09(木) 13:35:58 ID:???] 関数じゃないけど $h= $ary[0]; とか??
147 名前:145 mailto:sage [2009/04/09(木) 13:44:57 ID:???] >>146 とても効率の良いものですね ありがとうございます
148 名前:nobodyさん [2009/04/09(木) 14:51:46 ID:IIKZIRWt] Imagick::roundCornersで画像の角を丸めると、 背景がいつも黒になってしまうのですが、 どのように設定すればよいのでしょうか?
149 名前:nobodyさん [2009/04/09(木) 16:01:29 ID:OhmeRcsr] PHPの関数についてググるとヘルプのミラーサイトが結構でてきます ミラーサイトは公式サイトに断らなくても公開してもいいのでしょうか? また、公式サイトで公開されているhtml形式のヘルプをダウンロードしてそのまま自分のレン鯖においても問題ないでしょうか?
150 名前:nobodyさん mailto:sage [2009/04/09(木) 16:32:39 ID:???] 自分でライセンス確認すれや
151 名前:nobodyさん mailto:sage [2009/04/09(木) 16:37:45 ID:???] 既にあるものをなんで公開しようと思うの?どうして?死ぬの?
152 名前:nobodyさん mailto:sage [2009/04/09(木) 17:05:12 ID:???] >>151 それをミラーサイト全ての管理人に言ってくださいませんか
153 名前:nobodyさん mailto:sage [2009/04/09(木) 19:50:40 ID:???] >>149 SEO対策なのかな? PHPの公式マニュアルよりも、検索結果で上位に来るミラーサイトが多いですよね 自分の場合は、PHPの公式マニュアルをブラウザのお気に入りに入れてます。 jp.php.net/manual/ja/ google検索でヒットした結果を、改めてPHPの公式マニュアルで確認すればOK
154 名前:nobodyさん mailto:sage [2009/04/09(木) 19:57:07 ID:???] >>150 は初心者で自分も調べ方知らないだけだろ
155 名前:nobodyさん [2009/04/09(木) 23:15:50 ID:YWPkP/9r] test.phpをテキストファイルとして出力させるのですが このときブラウザの青い帯の部分(タイトルが表示される部分)に 任意の好きなタイトルを表示させたいのですが不可能でしょうか? どなたかご教示お願い致します 【test.php】 <?php header("Content-Type: text/plain"); echo "test"; ?>
156 名前:nobodyさん mailto:sage [2009/04/09(木) 23:32:12 ID:???] 青い帯の部分… えっとね。君にはまだphp早い。 まずはwww.w3.org/ から始めよう。 ここを理解したらwww.apache.org/ いって最後にwww.php.net/ 。 その青い帯作ってる糞マイクロソフトにも言っておいて。www.w3.org/ を50万回読めと。
157 名前:nobodyさん mailto:sage [2009/04/09(木) 23:40:47 ID:???] バカのくせにえらそうに
158 名前:nobodyさん mailto:sage [2009/04/10(金) 00:12:42 ID:???] >>156 たぶん君も知識が足りないと思うんだがfxのタイトルバーの色が何色か見てごらん あとoperaもな 大丈夫^^?
159 名前:nobodyさん mailto:sage [2009/04/10(金) 00:18:26 ID:???] 今時WebKitじゃないブラウザーとか・・・・ゴミいか。 角丸つくるのにいまだに透過ジフ?w
160 名前:nobodyさん mailto:sage [2009/04/10(金) 00:22:27 ID:???] headerでjavascriptのコード埋め込めば任意のタイトルにできるんじゃない?
161 名前:nobodyさん mailto:sage [2009/04/10(金) 00:27:38 ID:???] >>159 それはないよ WebKitはJavaScript周りがだめだめ
162 名前:nobodyさん [2009/04/10(金) 00:28:34 ID:z5toBuCm] PHP5.2使ってます。 ファイルを一意な名前で renameする良い方法ないですか? tempnam を使ってファイル名を生成すると、その時点でファイルが生成されてしまうため、 renameできません。tempnam で作った後に unlinkするのは、やっぱり気分が良くないし、 厳密には一意性が保証されない気がするので。
163 名前:nobodyさん mailto:sage [2009/04/10(金) 00:29:13 ID:???] タイトルをHTTP Headerでどうにかするのは無理 <title>好きなタイトル</title>を出力するしかない
164 名前:nobodyさん mailto:sage [2009/04/10(金) 00:31:59 ID:???] >>162 renameという標準関数がある
165 名前:nobodyさん [2009/04/10(金) 02:28:23 ID:bYC4ar8C] staticなメソッドの中で、 それがHoge::moge()の形で呼ばれたのか、 $hoge->moge()の形で呼ばれたのかを判別するにはどうしたらいいですか?
166 名前:nobodyさん mailto:sage [2009/04/10(金) 02:53:25 ID:???] $thisを見るとか?
167 名前:nobodyさん mailto:sage [2009/04/10(金) 05:12:52 ID:???] >>165 そもそもstaticなメソッドをthisからメンバ関数として呼ぶべきじゃないよ
168 名前:nobodyさん mailto:sage [2009/04/10(金) 09:47:55 ID:???] static全否定?
169 名前:168 mailto:sage [2009/04/10(金) 09:48:47 ID:???] ああ、ごめん勘違い
170 名前:nobodyさん [2009/04/10(金) 10:13:06 ID:0gMhmbJC] どなたか>>149 もお願い致します
171 名前:nobodyさん [2009/04/10(金) 10:32:51 ID:BYyPBH+i] foreach を 配列の途中から始めることはできますでしょうか? このような場合はforを使うのが普通なのでしょうか? よろしくお願いします。
172 名前:nobodyさん mailto:sage [2009/04/10(金) 10:38:07 ID:???] >>171 >foreach を 配列の途中から始めることはできますでしょうか? できないけど結果として同じものを得るのは可能 >このような場合はforを使うのが普通なのでしょうか? はい
173 名前:171 [2009/04/10(金) 10:53:33 ID:BYyPBH+i] >>172 レスありがとうございます。 やはりforを使うのが普通なのですね。 いちおう、後学のためにforeachを使って途中から開始する方法も教えていただけないでしょうか?
174 名前:nobodyさん mailto:sage [2009/04/10(金) 10:58:47 ID:???] forで初期indexがわかってる時しか使えないでしょ。 seekしてiterator使った方がいいよ。
175 名前:nobodyさん mailto:sage [2009/04/10(金) 11:03:41 ID:???] >>173 途中から開始するわけではなくて無駄な分はしっかりまわす感じ whileでやるようなやり方 $array = array(1, 2, 3, 4, 5); for ($i = 2; $i < count($array); $i++) { echo $array[$i]; } $count = 0; foreach ($array as $value) { $count++; if ($count > 2) { echo $value; } }
176 名前:nobodyさん mailto:sage [2009/04/10(金) 11:11:03 ID:???] foreach自体に途中から始める機能はないけど foreach (array_slice($array, N) as $value) こうやるのが普通?かな
177 名前:nobodyさん mailto:sage [2009/04/10(金) 11:11:14 ID:???] >>175 マジレスするとforeachの中でifで判定する手法は古いとだけ記述しておこう
178 名前:173 [2009/04/10(金) 11:20:09 ID:BYyPBH+i] >>174 すみません。 知識不足で「seekしてiterator」というのがわかりません; >>175 なるほど・・・ こうしてみると、たしかに後者は無駄が多いですね。 >>176 array_sliceで途中から取り出すというのは思いつきませんでした! これは使えそうですね!
179 名前:nobodyさん mailto:sage [2009/04/10(金) 11:32:44 ID:???] >>176 プチマジレスするとforeachの中でarray_sliceすると回すたびに関数が実行されるから 一度別の配列に入れるのがいい
180 名前:nobodyさん mailto:sage [2009/04/10(金) 11:41:47 ID:???] マジレスするとforでやりなYO
181 名前:nobodyさん mailto:sage [2009/04/10(金) 11:44:44 ID:???] >>179 以下のようにするとhogeが一度しか表示されないのはループの度にarray_sliceは実行されてfooは最初の一度だけってこと? function foo() { echo "hoge<br>\n"; return array(1, 3, 5, 7, 9); } foreach (array_slice(foo(), 2) as $value) echo $value,"<br>\n";
182 名前:nobodyさん mailto:sage [2009/04/10(金) 11:50:13 ID:???] >>178 $ai = new ArrayIterator(array(1, 3, 5, 7, 9)); $ai->seek(2); while ($ai->valid()) { echo $ai->current(); $ai->next(); }
183 名前:nobodyさん mailto:sage [2009/04/10(金) 11:53:22 ID:???] >>175 forの中にcount入れるとかナイワ
184 名前:nobodyさん [2009/04/10(金) 11:55:38 ID:FoG5RXFZ] プロキシでHPにアクセスする人います 80番ポートでアクセスしたとか8080番ポートでアクセスしたとか何番ポートを使ってアクセスしたかを調べたいのですが どのような関数を使うのでしょうか?
185 名前:nobodyさん mailto:sage [2009/04/10(金) 12:00:51 ID:???] >>183 よく嫁foreachだろ forはiで現在位置がわかるが foreachはわからないからな
186 名前:nobodyさん [2009/04/10(金) 12:00:54 ID:/dNSLV40] ttp://www.phppro.jp/phpmanual/php/filters.string.html 文字列フィルタについて質問です 上記ページと公式サイトには例が4つまで載ってるのですが これはあくまでも一例で他にもあるのでしょうか? もしよろしければ掲載されてないコードをご教示お願い致します
187 名前:nobodyさん mailto:sage [2009/04/10(金) 12:01:22 ID:???] >>179 こうやってもhogeは一度だけ表示されるけどもしかしてarray_sliceって特別な実行のされ方? function slice2() { echo "hoge<br>\n"; return array(1,3,5); } foreach (slice2() as $value) echo $value,"<br>\n";
188 名前:186 [2009/04/10(金) 12:01:35 ID:/dNSLV40] すいませんID出し忘れました 以後、気を付けます
189 名前:nobodyさん mailto:sage [2009/04/10(金) 12:02:41 ID:???] >>185 よく読んだらこう書いてありますね for ($i = 2; $i < count($array); $i++) { echo $array[$i]; }
190 名前:nobodyさん mailto:sage [2009/04/10(金) 12:24:25 ID:???] >>175 じゃないが俺もcount使ってるわ 配列の長さ取得するのってPHPだとcountじゃないの? JavaやJavaScriptでいうlengthと一緒だよね?
191 名前:nobodyさん mailto:sage [2009/04/10(金) 12:54:09 ID:???] 自分の場合、PHPでfor文使うのは、かなり少ないな。 なんかオフセット的なパラメータが出てくるのはうざったい。 自分の作ったコードでgrepしたら foreachの 1/10 以下だった。 while は半分ぐらい。 >>190 javascriptは微妙だけどね。 いきなり配列に x[100] = 'hogehoge'; とかすると、length は 101 になるくせに、 for(in) だと登録した1つしか出てこないし。そのわりに join は 101個結合するし。
192 名前:nobodyさん mailto:sage [2009/04/10(金) 12:56:45 ID:???] 折れも、for文なら count()を使う。 でも、大抵 foreach 文で処理しちゃうけどね...
193 名前:178 [2009/04/10(金) 12:58:57 ID:BYyPBH+i] >>179 そうだったんですか! ということは、for($i = 1; $i < count($array); $i++) のように書いた場合も、毎回count()が実行されるのでしょうか? 一度 $count = count($array) のようにしたほうがいいですか? >>182 ArrayIteratorというクラスがあったんですね。 ややコードが長くなりますが、配列が直感的に操作できますね! 配列のループだけでもいろいろなやり方があって、勉強になります! 質問してみてよかったです!
194 名前:nobodyさん mailto:sage [2009/04/10(金) 13:04:28 ID:???] // テスト用変数 function testAry() {for($a=0;$a<100;$a++) $h[]=$i;return $h;} // タイム測定 function bench() {return microtime(true);} // ベンチマーク表示 function cale($time) { echo "<pre>";print_r($time);echo "</pre>"; foreach($time as $t) {echo "<p>".($t[1]-$t[0])."</p>";} } // --------- 比較コード ---------------- */ $time[0][0]=bench(); $test = array(); $cnt=count(testAry()); for($i=0; $i<$cnt; $i++) {$test[]=$i;} $time[0][1]=bench(); // ---------- 175のコード ------------- */ $time[1][0]=bench(); $test = array(); for ($i=0; $i<count(testAry()); $i++) {$test[]=$i;} $time[1][1]=bench(); /* ---------- ここまで ---------------- */ cale($time);
195 名前:nobodyさん mailto:sage [2009/04/10(金) 13:05:15 ID:???] >>192 マニュアル読め。 jp.php.net/manual/ja/control-structures.for.php >この書き方には問題があります。 このコードは実行速度が遅くなることでしょう。 配列のサイズを毎回計算しているからです。 ... >>179 の意味がイマイチ取りきれんのだけど、foreach がループ回数分だけ式を評価するってのは初耳。 ちょっとありえんと思う。
196 名前:nobodyさん mailto:sage [2009/04/10(金) 13:06:32 ID:???] >>194 の続き ベンチマーク結果 0.00026893615722656(countをforから外したコード) 0.016515970230103(>>175 と>>185 が進めるのコード)
197 名前:nobodyさん mailto:sage [2009/04/10(金) 13:07:52 ID:???] >>195 間違い >>192 じゃなくて >>193 ごめんね。
198 名前:nobodyさん mailto:sage [2009/04/10(金) 13:08:30 ID:???] >>195 うほっ。最適化されるもんだとばかりorz。
199 名前:nobodyさん mailto:sage [2009/04/10(金) 13:08:59 ID:???] >>181 そういうこと foreach (array_slice(foo(), 2) as $value) echo $value,"<br>\n"; fooは一度しか呼び出されないが、配列の数だけarray_sliceが動いてる
200 名前:nobodyさん mailto:sage [2009/04/10(金) 13:11:00 ID:???] >>194-195 参考になりました ありっす
201 名前:nobodyさん mailto:sage [2009/04/10(金) 13:14:39 ID:???] >>199 マニュアルを読む限り、foreach が式をループ回数だけ評価するようには読めないんだけど。 っていうか、foreachが式が関数の場合に、関数は評価するが、その引数は評価しないとか、ありえんと思うが。 jp.php.net/manual/ja/control-structures.foreach.php
202 名前:nobodyさん mailto:sage [2009/04/10(金) 13:16:50 ID:???] さてベンチマークの俺の出番ですね
203 名前:nobodyさん mailto:sage [2009/04/10(金) 13:19:31 ID:???] >>202 お願いします。勇者!
204 名前:nobodyさん mailto:sage [2009/04/10(金) 13:21:58 ID:???] // テスト用変数 function testAry() {for($a=0;$a<1000;$a++) $h[]=$i;return $h;} // タイム測定 function bench() {return microtime(true);} // ベンチマーク表示 function cale($time) { echo "<pre>";print_r($time);echo "</pre>"; foreach($time as $t) {echo "<p>".($t[1]-$t[0])."</p>";} } // --------- 比較コード ---------------- */ $time[0][0]=bench(); $test = array(); $h = array_slice(testAry(), 50); foreach ($h as $v) $test[]=$v; $time[0][1]=bench(); // ---------- 175のコード ------------- */ $time[1][0]=bench(); $test = array(); foreach (array_slice(testAry(), 50) as $v) $test[]=$v; $time[1][1]=bench(); /* ---------- ここまで ---------------- */ cale($time);
205 名前:nobodyさん mailto:sage [2009/04/10(金) 13:22:39 ID:???] 続き テストした結果どちらもたいして変わらない
206 名前:nobodyさん mailto:sage [2009/04/10(金) 13:28:45 ID:???] 結論からいえばforの中で関数は使うなってこと
207 名前:nobodyさん mailto:sage [2009/04/10(金) 14:57:47 ID:???] >>206 頭大丈夫か?
208 名前:nobodyさん mailto:sage [2009/04/10(金) 15:08:18 ID:???] >>207 =>>175 ベンチマークみて行ってんならおまえ致傷だな
209 名前:nobodyさん mailto:age [2009/04/10(金) 15:08:50 ID:???] メールを受け取ったらphpファイルを起動させようとしているのですが上手くいきません。 昨日から詰まってます。。。。助けてください。 .forwardのパーミッションは600。メールの転送ができることは確認済みです。 PHP 5.0.4 FedoraCore .forwardの中身 "| /usr/bin/php -q /var/www/html/test2.php" test2.phpは単体で動かせることは確認済みです。 メールを受け取った後、test2.phpが動いてる様子がありません。。。
210 名前:nobodyさん mailto:sage [2009/04/10(金) 15:10:47 ID:???] >>207 ってID出さないスレで正規表現でたたかれてた人物じゃない? これ以上触れるとこのスレ荒らされるぞw
211 名前:nobodyさん mailto:sage [2009/04/10(金) 15:16:10 ID:???] >>209 test2.phpに#!/usr/bin/phpみたいなパスは書いてあるよな?
212 名前:nobodyさん mailto:sage [2009/04/10(金) 15:17:53 ID:???] これでダメならまたおいで .forwardの中身 "| /usr/bin/php /var/www/html/test2.php" test2.phpの中身の一行目(パスは自分の環境にあわせてね) #!/usr/bin/php -q
213 名前:nobodyさん mailto:sage [2009/04/10(金) 15:18:37 ID:???] >>212 あ、test2.phpのパーミッションは705か755にしろよ
214 名前:nobodyさん mailto:sage [2009/04/10(金) 15:19:09 ID:???] >>210 お前が荒らしてるんだよ頭大丈夫か?
215 名前:nobodyさん mailto:sage [2009/04/10(金) 15:20:35 ID:???] わざわざ配列のカウントを変数に入れたりしないから PHPだけの糞仕様を広めないでください まともな言語なら差は出ません
216 名前:nobodyさん mailto:sage [2009/04/10(金) 15:20:55 ID:???] >>210 貴様のせいでこのスレに正規表現クンが来たじゃないかww 責任とって>>175 を始末しろよw
217 名前:nobodyさん mailto:sage [2009/04/10(金) 15:23:22 ID:???] 215必死w
218 名前:nobodyさん mailto:sage [2009/04/10(金) 15:24:05 ID:???] 俺はーラッパーwwwwwwwwww バイトはスーパーwwwwwwwwwwwww タッパに葉っぱwwwwwwwwwwwwwwww 詰め込む河童wwwwwwwwwwww 頭はテンパーwwwwwwwwwwww パッパカパーwwwwwwwwwwwwwwwwww
219 名前:nobodyさん mailto:sage [2009/04/10(金) 15:28:04 ID:???] >>215 >まともな言語なら差は出ません ( ゚Д゚)ポカーン
220 名前:nobodyさん mailto:sage [2009/04/10(金) 15:33:34 ID:???] まともな言語というかコンパイラ言語なら差はでないだろうな。 JAVAやC#なんかからきたやつはforの中でlength書いてるだろうし、 PHPでも別にcountを中に書いてもいいよ。 速度ってもミリ秒の誤差程度だし別に気にする必要もない。
221 名前:nobodyさん mailto:sage [2009/04/10(金) 15:35:33 ID:???] >>211 入れてませんでした。 だけれど試して見ましたがダメでした。 >>212 変化ありませんでした。 パーミは705でやってます。 あまりにも解けなさすぎて吐き気が。。。
222 名前:207 mailto:sage [2009/04/10(金) 15:39:26 ID:???] いや・・・俺が言いたかったのは forの中で関数使うな for () { //ここで使うな } っていってるのかと思っただけなんだが
223 名前:nobodyさん mailto:sage [2009/04/10(金) 15:41:31 ID:???] >>221 まず、パイプ前なのか、パイプ後なのか切り分けろや とりあえず、シェルスクリプトならうごくかどうかやってみ。 touch hoge とかでいいから
224 名前:nobodyさん mailto:sage [2009/04/10(金) 15:47:08 ID:???] >>221 "| /var/www/html/test2.php" これでよしっと
225 名前:nobodyさん mailto:sage [2009/04/10(金) 16:08:39 ID:???] >>223 メールうけとったあとのシェルの動かし方がわからん。 shhogeというファイルを作ってtouch hogeを書き込む。 sh shhogeで空ファイルが書き込めることを確認してから パーミを705に変更。 .forwardの中身を"| /var/www/html/shhoge" や "| /var/www/html/sh shhoge"にしてみて、メールを受け取ってみたが だめだった。 >>224 それは最初にやったお。 test2.phpに#!/usr/bin/phpつけてやってもだめだったお。
226 名前:nobodyさん mailto:sage [2009/04/10(金) 16:10:46 ID:???] 一回再起動してもちつけ
227 名前:nobodyさん mailto:sage [2009/04/10(金) 16:29:11 ID:???] .forwardには来てるの?
228 名前:nobodyさん mailto:sage [2009/04/10(金) 17:16:00 ID:???] >>226 何か変えるごとにメール鯖を再起動してるお。 >>227 メールの転送はできてるお。
229 名前:nobodyさん mailto:sage [2009/04/10(金) 17:20:06 ID:???] PHPとは関係ない気がするが、メールサーバのローカル配送ログは確認した?
230 名前:nobodyさん mailto:sage [2009/04/10(金) 17:24:58 ID:???] /usr/bin/php が無かったりしないの?
231 名前:nobodyさん mailto:sage [2009/04/10(金) 17:25:20 ID:???] >>229 ごめんなさいお。疲れたのでたったいまVMwareを落としたとこだお。 夜風を浴びて飯食べたら、また来るお。 メールサーバのローカル配送ログは観方が判らなかったので スルーしてたお。あとで確認するお。
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("."));を書いてみて、 カレントディレクトリを把握してはどうだろう。そしたらパーミッションを確認してと・・