【PHP】下らねぇ質問はここに書き込みやがれ 32
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2006/11/06(月) 22:07:16ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0833nobodyさん
2006/11/19(日) 20:28:13ID:???別にcron使わんでも、register.phpにアクセスされたときに、
ついでにその仮登録情報のチアムスタンプが24時間以内のものかどうか確認して、
期限を過ぎてたらDBから削除、過ぎてなかったら本登録処理、ってやればいいでしょ。
0834nobodyさん
2006/11/19(日) 23:12:50ID:afBb4Sje0835nobodyさん
2006/11/19(日) 23:13:23ID:???0836nobodyさん
2006/11/19(日) 23:13:35ID:???0837nobodyさん
2006/11/19(日) 23:15:54ID:???thisは自身のオブジェクト、オブジェクトの中からじゃないと使えない
selfは単なる自分のクラス名、スタティックコール内からでも使える
0839834
2006/11/19(日) 23:26:24ID:afBb4Sjenewしたときに実行される関数というふうにとらえて間違いないでしょうか?
0840nobodyさん
2006/11/19(日) 23:28:28ID:???0841nobodyさん
2006/11/19(日) 23:55:33ID:QPerEU0+0843nobodyさん
2006/11/20(月) 00:04:20ID:zRxNwc2j答えてくれた方々ありがとうございました。
>>833のチアムスタンプがググってもわからなかったのですが何のことでしょうか?
今のところDBに入れてcronで削除していこうと考えています。
0846nobodyさん
2006/11/20(月) 00:07:42ID:???で、833+ゴミ掃除ってことで、「誰か」が本登録処理にアクセスしたときに
SQLで「delete from 登録 where 仮登録日付 < 24時間前」流せば一発で全部掃除できない?
最後の1人が放置したまま誰もアクセスしてこなくなったら掃除できないけど
そこまで気にするほどのものじゃあるまい。
0847nobodyさん
2006/11/20(月) 00:16:51ID:zRxNwc2jなるほど、ありがとうございます。
>>846
これならクローン使わずにもできますね。
こっちの方がよさそうです。
ありがとうございます。
0848nobodyさん
2006/11/20(月) 00:26:33ID:???この辺はユーザの登録数と登録アクセス頻度次第だよ。
ファイルでもDBでも数が多いところに削除の検索処理を入れると重くなる
(特にSQLのdeleteはロックがかかってその間のselectが停止する)ので、
全体のレスポンスに問題が出るケースもある。
そういう場合はcronでアクセス頻度の低い時間帯にメンテした方がいい。
その辺のTPOは踏まえた上で設計すべし。
0849nobodyさん
2006/11/20(月) 00:38:19ID:zRxNwc2j将来のことを見据えて(どうなるかわかりませんがw)
cronを使ってみます。
わからないことばかりですいませんでした。
いろいろとありがとうございました。
0850nobodyさん
2006/11/20(月) 01:13:15ID:???0851nobodyさん
2006/11/20(月) 02:38:25ID:fzLhPh+i今、例えば、トップページがあって、そこからログイン→mypageでmixiみたいに
自分のページが表示されるような感じで、写真を投稿できるようになってます。
トップページには検索ができて、それは誰でもできるようになってるのですが、
ログインしたユーザー(セッションを持っている)は、その検索結果(写真)を
自分のページに保存できるような感じになってます。
これは、セッションを持つなら登録ボタン表示、持たないならボタンを非表示みたいな
感じにしています。
ここで、質問なんですが、このようにセッションを持つユーザーと持たないユーザーが
同じページを見れるのは危険でしょうか?
セッションを持つユーザーが、セッションが必要なページと必要じゃないページを行ったり来たり
できるのは、危険でしょうか?
どうかアドバイスお願いします。
0852nobodyさん
2006/11/20(月) 06:53:32ID:???http://gigazine.net/index.php?/news/comments/20061103_php_accelerator/
このページで、
「ほかにはZend Optimizer、Zend Platform、ionCube PHP Acceleratorなどがありますが、
どれも最初の3つと比べるとあまり「おすすめできない」レベルとのこと。」
って書いてあるけど、その根拠が何も書かれてないのが謎。
要するに「有料のやつは最初から論外」というニート特有の考え方なのかな??
0853nobodyさん
2006/11/20(月) 07:43:01ID:???根拠は上の方に書いてあるこれ。
> で、この「PHPアクセラレータ」の種類がいろいろあるということはそれぞれ一長一短なワケですが、
> とりあえずあっちこっちのネット上における各種試用レポートなどを総合すると
> 「APC (Alternative PHP Cache)、eAccelerator、XCacheのうちのどれか」が無難なようです。
本人の考えってより、この人が発見できたネット上の試用レポートってのがどれなのか、が問題みたいね。
でもアクセラレータの試用レポートの類で「有料だから無視」とか言ってるのはほとんど無いと思うけど?
0855nobodyさん
2006/11/20(月) 09:01:52ID:???自分でちゃんと調べてどれがいいのか決めた方がいい
0857nobodyさん
2006/11/20(月) 09:26:38ID:???0858nobodyさん
2006/11/20(月) 09:57:32ID:???>>181 の5000までの素数ベンチプログラムで
平均3.20-3.25 位
環境は
Athlon2800
M PC3200-512 x 2
OS WinXP
Apache 2.0.59
PHP 5.2
Zend Optimizer
eAccelerator
参考までに
0859nobodyさん
2006/11/20(月) 10:20:38ID:???順番データを保持させようとしています。
指定行の「一個上に上がる」をクリックしたら、
そのデータのsortを-1して、
そのままだと同じ値になってしまう行データのsortを+1したいと考えています。
ところが一意性を持たせてあるので、
「そのsortを-1して、」という時点で、
一意性がないぜゴルァというエラーが出てしまいます。
指定行の-1と
別指定行の+1を同時に処理させる方法はないでしょうか?
0860nobodyさん
2006/11/20(月) 10:48:14ID:a1LEez8m一回削除しといて再度INSORTするとか
0861nobodyさん
2006/11/20(月) 11:40:49ID:???その戻り値の最初の要素の値を取り出したいのですが、
$result = return_array($array)[0];
と書くとParseErrorになります。
どう書けばよいのでしょうか?
0863861
2006/11/20(月) 12:04:17ID:???ありがとうございます。
0864nobodyさん
2006/11/20(月) 12:04:47ID:???実際のWebシステムでは、スクリプト本体よりもむしろ
サーバやDB入出力の部分がボトルネックになるので、
素数ベンチなんてほとんど意味がないけどな。
0867nobodyさん
2006/11/20(月) 13:31:12ID:???0871nobodyさん
2006/11/20(月) 15:33:46ID:???そういう関数作ったけど俺は。
0872nobodyさん
2006/11/20(月) 15:53:05ID:???一意性はスクリプト側で担保しろ。
別に難しいことじゃない。
任意のsortの値をINSERTかUPDATEする前に、
事前にSELECTしてみて存在するか否かを確認すればいいだけだ。
0873nobodyさん
2006/11/20(月) 16:08:58ID:???前後でのテーブルのLOCKを忘れるなよ。
0874nobodyさん
2006/11/20(月) 16:34:42ID:???肝心のオブジェクト指向がよくわからない・・・
従来のプログラムを、適当に部分部分でパーツ化して、
それをメソッドにすればいいんでしょうか?
オブジェクトにするメリットがわからない状態なので、
とりあえず適当にやってればそのうちわかるだろう程度に
考えているのですが、やっぱちゃんとした本買って勉強するべきですか?
0875nobodyさん
2006/11/20(月) 16:59:23ID:???とりあえず、この辺読んどけ
ttp://itpro.nikkeibp.co.jp/article/Watcher/20061117/254159/
0876nobodyさん
2006/11/20(月) 17:25:55ID:???0877nobodyさん
2006/11/20(月) 20:11:41ID:???設計はそれじゃいつまでもできるようにならんよ。
せめて他人が書いた(腐ってない)ソースを読むくらいしないと。
0878nobodyさん
2006/11/20(月) 20:35:36ID:???0879nobodyさん
2006/11/20(月) 20:38:05ID:???それが出来るくらいの能力がある人なら既に設計能力も高いと思う。
0880nobodyさん
2006/11/20(月) 20:47:59ID:???0881nobodyさん
2006/11/20(月) 20:50:02ID:???0882nobodyさん
2006/11/20(月) 20:57:28ID:zRxNwc2j1,の部分を今作っています。
入力が正しいか確認するだけのプログラムですが作りました。
腐ったソースの話題の中で公開するのもあれですが
添削してほしいです。
よろしくお願いします。
http://onegaisiamsu.ojaru.jp/php3.txt
0883nobodyさん
2006/11/20(月) 21:00:31ID:???アスペクト指向だっけか?
アスペクトPHPとかそのうちくるんだろうか・・・
0884nobodyさん
2006/11/20(月) 21:19:15ID:???0885nobodyさん
2006/11/20(月) 21:20:30ID:???0886nobodyさん
2006/11/20(月) 21:28:37ID:???0887nobodyさん
2006/11/20(月) 21:30:15ID:BPin2pz1実際やってみたらマッチしませんでした。
で、オプションでmを指定したらマッチするようになりました。
サンプルコード:
echo mb_ereg_replace("^.", "", "123\n123") . "\n\n";
echo mb_ereg_replace(".$", "", "123\n123") . "\n\n";
echo mb_ereg_replace("^.", "", "123\n123", "m") . "\n\n";
echo mb_ereg_replace(".$", "", "123\n123", "m") . "\n\n";
結果:
23
123
123
12
23
23
12
12
バージョン: 5.0.5
でもマニュアルには
> m を指定した場合、マルチラインモードとなり、 改行文字も "." に含まれるようになります。
(http://www.php.net/manual/ja/function.mb-ereg-replace.php)
としか書かれてません。
結局、デフォルトで^$が改行直後直前にマッチせず、mを指定するとマッチするようになるのが正しい挙動なんでしょうか。
それともこれはバグなのでしょうか。
0888nobodyさん
2006/11/20(月) 21:48:35ID:???0889nobodyさん
2006/11/20(月) 22:30:16ID:efSEaAzMですよね?
それで、PHPマニュアルに「もし phpize コマンドが見つからない場合は、
適切な devel 版の PHP パッケージをインストールしましょう。 PHP や拡張
モジュールをビルドするために必要なヘッダファイルや phpize コマンドは、この
パッケージに含まれます。」
と書かれていたので、PHP-5.2.1-devをインストールしたのですが、phpizeコマンド
が認識されません。phpizeコマンドを使うためには他に何が必要なのでしょうか?
0891889
2006/11/20(月) 22:55:01ID:efSEaAzM確かに、パスを通す必要があったようです。
しかし、WindowsでPHPを使っているのですが、パスを通すといっても
phpizeを使うためにはどこを指定すれば良いのか分かりません。
よろしければ、教えていただきたいのですが。
0892nobodyさん
2006/11/20(月) 22:57:30ID:???0893nobodyさん
2006/11/20(月) 22:59:03ID:???具体的に何を入れたいんだよ
0894889
2006/11/20(月) 23:04:45ID:efSEaAzMPHPでNamazuを呼び出すためのモジュールです。
phpizeコマンドを使えるようにして、configure,makeはcygwinでやろうと
思ったんですが。
>phpizeってwinなら関係ないかと・・・windowsでは必要ないんですか?
0895nobodyさん
2006/11/20(月) 23:09:42ID:???ソースに付いてるREADME.WIN32-BUILD-SYSTEMは読んだのか?
0896nobodyさん
2006/11/20(月) 23:11:56ID:???でもcygwinでphp入れたならbinにphpize入ってないか?
0898889
2006/11/20(月) 23:20:34ID:efSEaAzMそ、そうだったんですか。。。
じゃあ、PHP自体もcygwinを使ってWindows用のではないPHPを入れなければ
いけないんですね?
0900889
2006/11/20(月) 23:33:46ID:efSEaAzM整っていなかったようですね。
0901nobodyさん
2006/11/20(月) 23:56:43ID:???PHPをCronで実行する方法が判らなくて困っています。
どなたかご教授下さい。Fedora5です。
0903nobodyさん
2006/11/21(火) 00:02:57ID:???0904nobodyさん
2006/11/21(火) 00:20:54ID:???#!/usr/local/bin/php
<?php
:
?>
みたいなスタイルで書いたスクリプト。
1行目でCLI(コマンドラインインターフェース)版としてインストールしたPHPのフルパスを書く。
0905nobodyさん
2006/11/21(火) 00:39:44ID:???/usr/local/bin/php スクリプトファイルのフルパス
って指定をするのもアリ。
これならスクリプトファイルのパーミッションを実行可にしなくてもOK
0906nobodyさん
2006/11/21(火) 00:43:56ID:+Nuu4hvhふと気付いたら鯖(Xserver)のスペックが以下の通りでした。
PHPバージョン 4.3.9 ( セキュリティパッチ適用済 )
MySQLバージョン 4.0.26
これって、自宅鯖や他の鯖を使わずにあくまでも今使ってるXserverでDBを利用するなら、
インストールし直してPHP4.3.9・MySQL4.0.26の環境でDBを作成しないと駄目なのでしょうか?(´・ω・`)
0907nobodyさん
2006/11/21(火) 00:59:00ID:???駄目ってことはないけど、どこが違うのか常に意識しとく必要はある。
初心者ならインストールし直して揃えといた方が無難。
0908nobodyさん
2006/11/21(火) 01:07:51ID:???何度もすみません;
#whereis phpとやったら
php: /usr/bin/php /etc/php.ini~ /etc/php.ini /etc/php.d /usr/lib/php
となったのでcrontabに
0,10,20,30,40,50 * * * * /usr/bin/php [対応スクリプトへのフルパス]
とやったものの10分経過しても更新されずでした・・・
service crond restartもやったのですが駄目でした('A`)
0909nobodyさん
2006/11/21(火) 01:16:42ID:???0910nobodyさん
2006/11/21(火) 01:18:54ID:+Nuu4hvh有難う御座います、インストールし直してチャレンジしてみます!
0911nobodyさん
2006/11/21(火) 01:29:05ID:???まずスクリプトが実行されたのかどうかを確認してみては?
スクリプトの先頭にファイルへのログ出力を入れてみるとか。
ちなみにコマンドラインで
/usr/bin/php [対応スクリプトへのフルパス]
を実行したらそれはちゃんと動くんだろうね?
特にカレントディレクトリには気をつけた方がいいよ。
試しにrootディレクトリ上で実行してみるといい。
0912nobodyさん
2006/11/21(火) 12:25:05ID:???$array = $this->$method();
}
こんな感じで因数内の文字列を使い、
メソッドを呼び出すと、エラーが出てしまいます。
Fatal error: Method name must be a string in
これはあきらめるしかないんでしょうか・・・
0913nobodyさん
2006/11/21(火) 13:04:27ID:???0914nobodyさん
2006/11/21(火) 13:06:16ID:???call_user_func()使えば。
あと因数でなく引数な。
0917nobodyさん
2006/11/21(火) 16:00:58ID:???0918nobodyさん
2006/11/21(火) 16:25:26ID:bLvv9/Lnfunction A() { }
function B() {
function C() { }
}
}
上記の場合、
B ( )の中からA ( ) を呼び出すには
$this->A()
ですが、
B ( )の中からC ( ) を呼び出すには
どう記述すればいいんでしょう???
0919nobodyさん
2006/11/21(火) 16:30:48ID:???B()をコールした時に普通にグローバル関数としてC()が定義されるはず
0921nobodyさん
2006/11/21(火) 17:28:27ID:???function dt ($method = 'select') {
$array = call_user_func(array($this, $method));
}
試してないから動かないかもしれないけど...
0923921
2006/11/21(火) 17:40:18ID:???シングルトンパターンで、クラス内でオブジェクトを生成するときなんかは
$class = __CLASS__;
return new $class();
みたいにすると楽チンだよな。
0924nobodyさん
2006/11/21(火) 17:46:22ID:???0925nobodyさん
2006/11/21(火) 18:02:58ID:???0926921
2006/11/21(火) 18:02:59ID:9jzN//PMとりあえず、$methodにnullぶちこんでも警告が出るだけでエラーにはならなくなる。
0928nobodyさん
2006/11/21(火) 18:41:14ID:???謎の不具合現象が発生し意図した動作をしない!どこだ、何だ!と
悩むことになるでしょう...。
0929nobodyさん
2006/11/21(火) 18:48:12ID:???プログラムを車にたとえば、
クラスはタイヤ、と表現してる本とかありますが、
それは関数も同じでは・・・?
単一関数で片付けられないようなものは
クラス、という認識を持ってるのですが間違ってますよね?
0930nobodyさん
2006/11/21(火) 18:53:51ID:???タイヤだとどちらでも良いイメージだな
0931nobodyさん
2006/11/21(火) 19:00:10ID:???0932nobodyさん
2006/11/21(火) 19:00:11ID:???レス数が900を超えています。1000を超えると表示できなくなるよ。