【PHP】下らねぇ質問はここに書き込みやがれ 26
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/08/07(月) 13:11:50ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0521nobodyさん
2006/08/16(水) 05:06:18ID:GaCZ9Sq1ストリームの理解ってこんな感じでいいんでしょうか?
可変幅のメモリ領域である(そもそも大きさという概念がない??)
ストリームの開始位置がファイルポインタに記憶される
ストリームから実際にファイルにフラッシュする作業は自動的に行ってくれる
0522nobodyさん
2006/08/16(水) 06:32:13ID:???様々なリソース(ファイル、文字列、バッファ、ネットワーク上のオブジェクト etc)に対して、
統一された手段で(主にシーケンシャルな)アクセスを提供するのがストリームという概念。
ま、理解出来るか知らんけどがんばれや。
0523nobodyさん
2006/08/16(水) 08:10:44ID:???session.cookie_lifetimeを「0」に設定しているのに
時間が経つとセッションが切れてしまいます。
その時によってどれくらいの時間で切れるかはまちまちなのですが、
早いときには20分程度で切れてるようです。
セッションが切れる時間の長さから考えて、
session.gc_maxlifetime(値は1440)あたりが関係していそうな気もしますが、
session.cookie_lifetimeの設定(ブラウザ閉じるまで)はなぜ無視されちゃうのでしょうか・・・。
0524523
2006/08/16(水) 08:12:26ID:???24時間経っても切れてない時もあります。
0525nobodyさん
2006/08/16(水) 08:30:48ID:???UTF-8の問題って何?
0526nobodyさん
2006/08/16(水) 09:04:15ID:???ん?
session.cookie_lifetimeっていうのは
session id をcookieに保持しておく時間だったような。
でもって「0」は特殊な意味を持っていて、ブラウザ閉じる
とcookie破棄を意味するから、「0」を設定している限り
「ブラウザを閉じる=セッション切れる」を意味するはず
ですけど?
0527nobodyさん
2006/08/16(水) 09:08:31ID:???session id に結び付けられたセッションデータ
を破棄するまでの時間だったかな
ただ、その時間を経過すれば「必ず」破棄されるわけでは
なかったような。gcなんとかって他に定義あるでしょ?
そこでgcを行う確率を設定できたような
0529nobodyさん
2006/08/16(水) 09:17:37ID:???ストリームとは プログラミング
とかでぐぐった?
>>522 が書いてる通り
概念だから、まぁ、こんなもんか。ぐらいの理解で
いいんじゃないの。
0530nobodyさん
2006/08/16(水) 09:22:13ID:???実際には、HDDという機械の動きだから、1byte読むと命令
してもすぐには読めない。命令→待ち→データを受取る
というような「制御」を行う必要がある。OSがストリームとか
いう概念で、そのへんをうまくオブラートに包んでくれてる。
OSレベルで言うところのストリームってこんな感じかな
0531523
2006/08/16(水) 09:34:15ID:???あ、分かりにくかったかもしれませんが、>>523、>>524の状況は全て「ブラウザは一切閉じない」状況です。
ずっとブラウザを開き続けているのに、ときどきセッションが切れてしまうんです。
>>527
gcの確率は1000分の1にしてあり、なおかつ、セッションを使って
同時にログインするユーザー数は2(まだテスト中なのでどちらも自分でログイン)しかないので、
ガーベッジコレクションの影響は無視できる程度、と私は解釈しているのですが・・・
0532nobodyさん
2006/08/16(水) 09:57:17ID:???session.cookie_lifetime=0
session.gc_maxlifetime=1440
session.gc_probability=1
session.gc_divisor=1000(確率1/1000)
で、ブラウザを開きっぱなしにしていると約20分程度で
セッションが切れる。ってことですね。
なんでだろ?
ブラウザのcookieの有効期限確認してみるとか
PHPデフォルトであるなら/tmpのセッションデータファイルの
タイムスタンプみてみるとか
あっ、PHP4.2.2以前でWindowsでFatとか条件がハマれば
早く切れるバグってのがあったぽいね
0533nobodyさん
2006/08/16(水) 09:58:36ID:???LinuxとかならCronで/tmpを掃除してる処理が動いてたりして
0534nobodyさん
2006/08/16(水) 10:12:18ID:???cookieが取得できねーのか
そのあたりを切り分けろ
0535nobodyさん
2006/08/16(水) 10:34:55ID:GaCZ9Sq1ストリームは、概念であるという事は理解できました。
ストリームが具体的にどういうものになるかは、状況や環境よって、違うということですよね?
でも、多くの場合、それはメモリ上のバッファのようなものでしょう?
0536nobodyさん
2006/08/16(水) 10:37:44ID:GaCZ9Sq1ttp://koho.osaka-cu.ac.jp/~sugi/Clang/C9.html
0537523
2006/08/16(水) 11:22:32ID:???おっしゃる通りの設定です。PHPのバージョンは4.3.1です。
また、スクリプトが動いているのはLinuxで、クライアント側はXPです。
で、ブラウザ側になぜかCookieが見当たりません。他のサイトのCookieは確かにあるのですが、
自分が今問題にしている自サイトのCookieファイルが保存されていないようです。
でも実は以前にはセッションを開始すると確かにCookieがブラウザに保存されていたのですが、
あるタイミングから保存されなくなってしまいました。
おそらくクライアント側パソコンの「マシン名」を変更した時からだと思います。
しかし、Cookieファイルが見当たらないにも関わらず、「ieHTTPHeaders」を使って通信内容を確認してみますと、しっかり
「Cookie: test-session=6e24cc246481866c7d52f*********」といった感じで、セッションIDが正しく送信されています。
セッションの動作(ログインやログアウトなど)も期待通りの動作ですが、前述のように時々勝手にセッションが切れてしまうのが唯一の問題です。
もう何がなんだかワケがわかりません・・・。
0538nobodyさん
2006/08/16(水) 11:24:18ID:???変な理解に仕方だな
ストリームという概念を、実装するときにメモリを利用するけど
ストリーム=バッファ ではないよ
車を動かすのに、エンジンを使用するけど
「多くの場合、車はエンジンのようなものでしょうか?」
と聞いているようなものだ
0539523
2006/08/16(水) 11:24:50ID:???cronでは掃除しておりません。
>>534
セッションが意図しないタイミングで切れてしまった時にsession.save_pathで指定されている
ディレクトリを確認してみましたところ、セッションデータファイル自体が
消えてしまっているようです。
0540nobodyさん
2006/08/16(水) 11:49:29ID:???その設定だと、アクセスがあるごとに1/1000の確率で
そのアクセスよりも20分以上前のセッションファイルが消去される。
アクセス数が少なければ消されにくい。
また、例えアクセス数が多くても、確率で動いているので運が悪ければいつまでたっても消されない。
>>537
期限が0のクッキーは保存されない。そういう仕様。
0542nobodyさん
2006/08/16(水) 12:34:06ID:???リロードしてるうちに普通にgc起動しちまって
セッションデータが消えてるだけじゃね?
http://jp.php.net/manual/ja/ref.session.php
session.gc_divisorはPHP 4.3.2以降ってなってるけど
使ってるのは4.3.1なんだよな?
0543nobodyさん
2006/08/16(水) 13:35:57ID:???0544523
2006/08/16(水) 13:37:07ID:???> そのアクセスよりも20分以上前のセッションファイル
これは「ファイル生成時刻が20分以上前の」セッション・ファイルのことだと解釈して良いのでしょうか?
> 期限が0のクッキーは保存されない
とのことですが、ではその場合ブラウザはどうやってセッションIDを(一時的にでも)保存し、どうやってサーバーに対して送信しているのでしょうか?
前述しましたように「ieHTTPHeaders」で確認しますと、たしかにセッションIDはローカルのどこかに記憶されているようです。
Cookieファイルが見当たらないのに値が保存されているということは、あとはメモリ上に確保されている?というくらいしか思いつきません。
0545523
2006/08/16(水) 13:41:27ID:???>リロードしてるうちに普通にgc起動
私もその可能性くらいしか思いつかないのですが、
なにしろgcの確率が1/1000で、しかもアクセス回数は自分だけなので
せいぜい数十分の間に数回〜数十回程度です。
なのに、こうした数字の割には、頻繁にセッション切れが起こっている気がします。
それと、「session.gc_divisorはPHP 4.3.2以降」という記述がそのページに見当たらないのですが…??
念のため私の環境でphpinfoをやってみましたが、たしかに4.3.10でsession.gc_divisorの項目も存在しています。
0546523
2006/08/16(水) 13:43:43ID:???実は鯖にPleskが入っておりまして、
なかなか怖くてPHPのバージョンアップに踏み切れません・・・
(Plesk自身がPHPで構築されているため、いろいろ依存関係とかあるらしいです)
どなたかPlesk環境でPHPのバージョンアップを経験された方いらっしゃいますでしょうか?
0547nobodyさん
2006/08/16(水) 14:22:32ID:???10以下の場合は終了で、
11以上の時は10以下になるまで乱数の生成をやりなおし、
10以下になったところで終了し、
何回乱数を生成しなおしたかをカウントしたいのですが、
どのように書いたらいいのかわかりません・・・
$rand = rand(1, 20)
if($rand <= 10) {
echo "終了";
}
elseif($rand >= 11) {
ここでループの処理?
}
どなたかお助けくださいorz
0548nobodyさん
2006/08/16(水) 14:41:55ID:???$rand = rand($a, $b);
if ($rand <= 10) {
echo $rand;
} else {
hoge($a, $b);
}
}
試行回数調べたいなら静的変数使うといい。
0549nobodyさん
2006/08/16(水) 14:42:01ID:???夏休みの宿題か?
while(1) {
// 乱数生成
// 何回生成したかカウントアップ
// 10以下だったらbreak;
}
0550nobodyさん
2006/08/16(水) 15:05:19ID:???どうもありがとうございます。
早速ソースを参考にさせていただきましたが、
まだ思ったとおりにいかないので、
このソースを元に試行錯誤してみたいと思います。
>夏休みの宿題か?
確率の計算のものがあって、どうしても計算しきれなかったので、
ずっともやもやしていて、シミュレーターでもつくって、
だいたいどのくらいの値か出してみようと思った次第ですorz
0551nobodyさん
2006/08/16(水) 15:09:32ID:???半角と全角の数字のみ
入力を受け付けるにはどうしたらいいでしょうか?
0553nobodyさん
2006/08/16(水) 16:00:57ID:oFrHrQOU0554nobodyさん
2006/08/16(水) 16:03:46ID:???全角数字を半角数字に置換
後は数字かどうかのチェック(正規表現、is_なんたら関数、ctypeなんたら関数)
0558nobodyさん
2006/08/16(水) 18:40:10ID:???0559nobodyさん
2006/08/16(水) 18:46:29ID:???0560nobodyさん
2006/08/16(水) 18:54:51ID:???0561550
2006/08/16(水) 19:05:28ID:???いいえ。確率と一言でいったので誤解を招きましたが、
実際はもっと複雑な問題なんです。
上のほうのソースは部品として使うだけなので。
他の計算部は別に作ります。
0562nobodyさん
2006/08/16(水) 19:18:58ID:???文字列変数が、マルチバイト文字を含んでいるかどうか、の判定ロジックで
ベター、もしくはベストなものってどうやるんでしょうか?
とりあえず思いつくのはstrlenとmb_strlenで値が違えばマルチバイト含む、
といった判定方法くらいなのですが…
0566nobodyさん
2006/08/16(水) 19:31:37ID:BwdVe+rWxsasというWAMPパッケージで、php_openssl.dllとphp_curl.dllを「F:\XSAS_XCP\diskw\usr\local\PHP\extensions」へ
置いて、php.iniで;を消しました。 しかし、xsas起動時つまりApache起動時に「・・・モジュールが見つかりません」
となってしまいます。
0569nobodyさん
2006/08/16(水) 20:21:34ID:???php.iniのextension_dirがその
F:\XSAS_XCP\diskw\usr\local\PHP\extensions
になってる?
0573nobodyさん
2006/08/16(水) 21:09:25ID:???PHP + MYSQLで膨大なデータベースから全文検索したいんですが
text like "%検索語%" みたいにすると死ぬほど遅いです。
レンタルサーバー(XREA)を使っているのであまりいじれないんですが
どうすれば高速化できますか?
0574nobodyさん
2006/08/16(水) 21:16:26ID:???少なくともtextにindexは振ってあるんだよな?もちろん。
とりあえずここで聞くよりDB板の方がマシそうだけど…
DB以外での解決方法を模索してるのか?
0575nobodyさん
2006/08/16(水) 21:27:10ID:???ていうかマニュアル見てください
http://mysql.com/doc/refman/4.1/ja/fulltext-search.html
0576nobodyさん
2006/08/16(水) 21:31:34ID:???0577nobodyさん
2006/08/16(水) 21:32:50ID:???0579nobodyさん
2006/08/16(水) 21:34:12ID:ShnVBp2+0580nobodyさん
2006/08/16(水) 21:56:57ID:????
0581nobodyさん
2006/08/16(水) 22:40:16ID:???Web鯖と別に、高速なデータベース専用鯖を持つべきです
0582nobodyさん
2006/08/16(水) 23:16:41ID:???0583nobodyさん
2006/08/16(水) 23:30:57ID:???0584nobodyさん
2006/08/16(水) 23:48:40ID:???と言いたかったと思われ
0585nobodyさん
2006/08/17(木) 00:05:46ID:lrPl7LqRこれの理想ヒップと理想ウエストを作って欲しいのですが、
phpを作成代行してくれるスレなどはありますか??
0586nobodyさん
2006/08/17(木) 00:17:15ID:???1.日本語は単語の区切りが無いのでなんとか分割したい
>形態素解析(Chasen、MeCabとか)して単語に分ける
2.MySQLの全文検索は日本語に対応していない
>1で解析した文を16進とかにして保存する。検索するときも文を
形態素解析して16進に変換してFullText検索する
連鯖ではいろいろな面でかなり辛そう。
参考サイト:http://www.ironhearts.com/diary/archives/000868.html
連鯖だと全文検索したいフィールドをテキストに落とすことを考えて
テキスト全文検索(kakasiとかNamazuとか)で検索するてのが現実的かー
0588nobodyさん
2006/08/17(木) 00:32:15ID:???具体的には、ある値のデータ型が「int」かどうかを調べたいのですが……
よろしくです。
0589nobodyさん
2006/08/17(木) 00:37:37ID:???まぬある見てくれ
http://jp.php.net/manual/ja/ref.var.php
0590nobodyさん
2006/08/17(木) 00:42:23ID:???どうもありがとう。
マニュアルのどこを見てよいのか分からなかったであります。
「変数操作関数」だったのね。
必死に数学関数を見て探していた……orz
0591585
2006/08/17(木) 00:47:33ID:lrPl7LqR理想ヒップは身長×0.53
理想ウエストは身長×0.38
らしいです。
>>585のリンク先みたいに作れませんかね??
0592nobodyさん
2006/08/17(木) 00:54:05ID:???日本時間が表示されません。
海外の時間+9時間で合わせてみたのですが
それでも時間が合いません。
分とかもずれてるんです
サーバーの時計が合ってないのですか?
どうすれば良いですか?困ってます
教えてください
サーバーはアリゾナにあるらしいのですが
ほんとかどうか知りません
0593nobodyさん
2006/08/17(木) 00:57:02ID:???ほれ
<?php
$t = $_GET["t"];
echo <<<EOT
<html><head><title>理想のぼでい</title></head><body>
<form action="/" method="GET">
身長<input type="text" size=4 name="t" value="{$t}"> <br>
<input type="submit" value="compute">
</form><br>
EOT;
if ($t != "") {
echo "身長".$t."cmのばやい<br>";
echo "トップバスト:".($t * 0.525)."cm<br>";
echo "アンダーバスト:".($t * 0.423)."cm<br>";
echo "二の腕:".($t * 0.15)."cm<br>";
echo "ウエスト:".($t * 0.38)."cm<br>";
echo "ヒップ:".($t * 0.535)."cm<br>";
echo "太もも:".($t * 0.30)."cm<br>";
echo "ふくらはぎ:".($t * 0.205)."cm<br>";
}
?>
あとは何とかしろ。つかここはそういう質問はだめだかんな。
自分で作ってわからないことを質問するってのがここの掟
0594nobodyさん
2006/08/17(木) 00:59:25ID:???<?php
$niceHip = $_POST['height']*0.53;
$niceWaist = $_POST['height']*0.38;
print "理想のヒップ={$niceHip}cm<br>";
print "理想のウェスト={$niceWaist}cm<br>";
?>
0595585
2006/08/17(木) 01:12:26ID:lrPl7LqRはつながっているんですか??
・・・それにしてもすごいですね。
こんなにすぐ作れちゃうもんなんですね。
0597nobodyさん
2006/08/17(木) 03:25:27ID:???0602nobodyさん
2006/08/17(木) 11:15:37ID:???0603nobodyさん
2006/08/17(木) 11:49:12ID:???に見えた
0604nobodyさん
2006/08/17(木) 13:00:50ID:???>前述しましたように「ieHTTPHeaders」で確認しますと、たしかにセッションIDはローカルのどこかに記憶されているようです。
>Cookieファイルが見当たらないのに値が保存されているということは、あとはメモリ上に確保されている?
亀レスであれなんだがおそらくその解釈で合ってると思う。
HTTP通信をキャプチャしたらCookieの項目があった=ローカルマシンのどこかにその値がある
・・・ということなので、ファイルが存在しないのならメモリにあるとしか考えられない。
0606nobodyさん
2006/08/17(木) 14:22:03ID:???0608nobodyさん
2006/08/17(木) 15:50:07ID:???0609nobodyさん
2006/08/17(木) 15:51:54ID:???0610nobodyさん
2006/08/17(木) 16:13:29ID:FtiwPZNrを設置するには2つファイルが必要ですか??
0611nobodyさん
2006/08/17(木) 16:18:16ID:???それはできません
浮動小数点の誤差というのは
echo floor((0.1+0.7)*10);
が8ではなく7になるという現象
0612nobodyさん
2006/08/17(木) 16:19:52ID:???あのソースをコピーしてメモ帳とかのエディタに貼り付けて、
test.phpっていう名前で保存して、
サーバにアップロードして、test.phpにアクセスすればOK。
もちろんPHPが使えるサーバじゃないとだめ。
っていうかこのソースパースエラー出るよ。
0613nobodyさん
2006/08/17(木) 16:31:54ID:FtiwPZNrパーミッションとかいじりますか??
0614PJP
2006/08/17(木) 16:38:31ID:Ex5q979l$lines = file($logfile);
$countline=count($lines);
これで$countlineが常に1になってしまいます。
データは以下のように保存しています。
$logdata='テスト';
$fp = fopen ($logfile, "w");
fputs ($fp, $logdata);
for($i = 0; $i < $countline; $i++)
fputs ($fp, $lines[$i]);
fclose ($fp);
1.logのファイルの中にはテストが溜まっていってるのですがcount()がいつも1を返します。
ご教授いただければ幸いです。
0616nobodyさん
2006/08/17(木) 16:55:03ID:FtiwPZNrhttp://www.uploda.org/uporg481980.jpg.html
このようになりました。
0618nobodyさん
2006/08/17(木) 17:02:50ID:FtiwPZNrinfoseekの無料の奴なんですけど大丈夫ですか??
0619nobodyさん
2006/08/17(木) 17:13:49ID:???0621nobodyさん
2006/08/17(木) 17:16:35ID:???■ このスレッドは過去ログ倉庫に格納されています