【PHP】下らねぇ質問はここに書き込みやがれ 56
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/11(木) 17:55:41ID:uObe69hrPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/
◆質問する時の注意
・ sage進行(メール欄にsageと記入すること)「sage進行」とはスレを目立つ上部に上げないことによって、荒らしが発見できないようにすることです
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・ 書き込むときには、「公式マニュアル、リファレンス本は読みました」と明記すること
(でないと、公式マニュアル読めと煽られます)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
・質問者が「公式マニュアル読んだ」と書いていないからといって、
公式マニュアルに書いてもいないのに、公式マニュアルよめと適当なことを言わないこと。
質問者は公式マニュアルを読んでいるかもしれない。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0136nobodyさん
2007/10/13(土) 18:51:36ID:???最初にカウンター作った時(shellスクリプト)、
やりかたが良く判らなかったのでその方法でやった。"1"の羅列
特にファイルが飛ぶとかなかった(PHPだとどうかな)けど、
ファイル容量が当たり前だが肥大してきて、普通のロックタイプにしてしまった。
定期的に"差分"にすれば良いかもね。でもカウンターとか最近使わなくないか?
0137nobodyさん
2007/10/13(土) 19:47:17ID:???appendはOSが保証してくれるので安全。
当然ロックは不要。
集計するときは同時に他のが集計を始めないように他にロックファイル作るなりして排他処理をかけ、
まずrename(OS保証の安全な退避法になる)し、fstatのキャッシュをフラッシュしてからやること。
要はapacheログのローテーションと同じだからググれ
0138nobodyさん
2007/10/13(土) 20:10:31ID:???げっ! そんなに簡単に壊れるものなの?
計算してみたら素人考えだと結構余裕だと思うんだがダメ?
1日4000アクセス: 21.6秒に1回
1日5000アクセス: 17.28秒に1回
1日1万アクセス: 8.64秒に1回
1日数十万PVってスゴイですね>>131
0139nobodyさん
2007/10/13(土) 20:14:09ID:???ファイルロックが確りしてないとF5連打だけで壊れる事がありますよ
0140nobodyさん
2007/10/14(日) 01:24:53ID:???0141130
2007/10/14(日) 01:27:30ID:???うちのサイトは21時〜24時がアクセスの6割ぐらいを占めてる
プログラムあんま知らん頃だったとはいえ
flockとかかけても壊れたな・・・・
0142nobodyさん
2007/10/14(日) 01:54:06ID:???数字だけでも2〜3秒でダメですか。結構シビアですね。
Cを少し勉強した時シェアード(共有)メモリってのがあったけどPHPでも出来ない?
http://jp2.php.net/manual/ja/ref.shmop.php
ファイル扱うよりいいのかどうか判りませんが。
0143nobodyさん
2007/10/14(日) 02:18:24ID:???0146nobodyさん
2007/10/14(日) 02:51:14ID:TEnpd0OZfopen($filename, "a");
でファイルがなかった場合、作成されますか?
UIDがなんたらかんたらとマニュアルに書いてあったので不安です。
winサーバでは問題なく作成されたんですが、linuxではどうなんでしょうか?
0147nobodyさん
2007/10/14(日) 03:38:03ID:???0148nobodyさん
2007/10/14(日) 03:54:52ID:zCinDJDYパスワードをSESSIONで渡してるけどバレちゃいますか?
0149nobodyさん
2007/10/14(日) 04:02:37ID:???生のパスワードをやりとりしてたら盗聴可能
何のためのセッション変数だw
0150nobodyさん
2007/10/14(日) 04:52:42ID:???0151nobodyさん
2007/10/14(日) 08:41:50ID:???0152nobodyさん
2007/10/14(日) 09:10:35ID:???0153nobodyさん
2007/10/14(日) 10:13:40ID:???0154nobodyさん
2007/10/14(日) 10:18:30ID:???共有メモリでも結局ロックはしないといけないぞ。
それにファイルロックでも負荷が問題になって変な動きになる事はたぶんあんまりないはず。
ウェブアプリだと、いつ接続が切られて死ぬかもしれないから、
ロックファイルつくれば安心、ということはない。
ロックしたあと死ねばロックされっぱなしになる。
いつ死んでもいいようにするか、接続きられてもすぐに殺されないようにするか。
それでも生き死にはApache次第だから、ロックが変になる事はあり得る。
でもPHPのある共有サーバならデータベース位あるはずだから、
そっちを使った方がたぶん速くて強い、かつ設定に依存しないポータブルなものが出来ると思う。
0155nobodyさん
2007/10/14(日) 10:25:34ID:???カウンタ自体は1バイトアペンドでやっちゃっても良さそう。
0156131
2007/10/14(日) 10:36:00ID:U7e4W6gpファイルが壊れるのが一番心配だったのですが、
実際に同じことをやられていた人や、appendはOSが保証してくれるというので安心しました。
業務でやっているわけじゃないので、絶対に壊れてはダメというわけではないのですが、
さすがに毎日のように壊れていては話にならないので、試行錯誤中でした。
頂いたレスで、
> 要はapacheログのローテーションと同じだからググれ
とありましたが、このappendのロジックを思いついたのも、
毎日のapacheのアクセスログが何で破損しないんだろう、という点からでした。
ファイルのサイズも何GBもあっても一瞬で計算できるのも利点だと思います。
とりあえず、やり方で本番環境に乗せる予定です。
どうもありがとうございました。
0157nobodyさん
2007/10/14(日) 10:36:02ID:???データベースへの接続は負荷高いし。
俺も1バイトアペンドでいいんじゃないかと思ってきたw
1バイトアペンドで何が問題?
ファイルサイズ?
一日ごとにファイルわければ問題なし。
そして、過去の日付は、ファイルサイズによるカウンタ法から
数値を入れたファイルに変換すればいいだろう。
0158nobodyさん
2007/10/14(日) 10:49:09ID:???さすがに吹き出すだろうか?w
today.dat ・・・・ファイルサイズでカウントする
2007-10-13-12345.dat・・・アクセス数12345 ファイルサイズは0
2007-10-12-44444.dat・・・アクセス数44444 ファイルサイズは0
ってな感じで。いや、中身読むより早いかなぁと思って。
ここでひらめいた! ファイル名カウンタ法!
アクセスがあるたびに、ファイル名でカウンタする。つまり
77777.dat ・・・ 77777がアクセス数
で、アクセスがあればリネーム。
リネームが成功すればカウント成功。失敗すれば
他プロセスがカウントしていたということでリトライ。
0159nobodyさん
2007/10/14(日) 10:54:49ID:???更新にラグが出るんだっけ?
0160nobodyさん
2007/10/14(日) 12:30:32ID:TEnpd0OZそれともforでNoを作っていくものなんでしょうか?
0161nobodyさん
2007/10/14(日) 12:35:47ID:???ログに記録している人の方が多いいと思われ、Noと記事の内容の不一致が起きると
都合の悪い事も出てくるからね。
0162nobodyさん
2007/10/14(日) 12:46:10ID:???0163nobodyさん
2007/10/14(日) 12:49:51ID:rdw+jS+bflockは接続が途絶えれば解除されるような?
0164nobodyさん
2007/10/14(日) 12:50:59ID:???0165nobodyさん
2007/10/14(日) 12:52:11ID:???画像掲示板に連続投稿とか出来たら最高なんですけど。
0166nobodyさん
2007/10/14(日) 12:56:42ID:???0168nobodyさん
2007/10/14(日) 13:26:30ID:???2ちゃんねるに書き込むスクリプト。
0169nobodyさん
2007/10/14(日) 13:52:38ID:???0170nobodyさん
2007/10/14(日) 13:56:37ID:???0171nobodyさん
2007/10/14(日) 14:11:23ID:???0172nobodyさん
2007/10/14(日) 15:02:40ID:???しかしカウンタでDB使っている日とってそんなにいるのか・・・
カウントするだけなのによ
0173nobodyさん
2007/10/14(日) 15:03:30ID:???0174nobodyさん
2007/10/14(日) 15:22:09ID:???0175nobodyさん
2007/10/14(日) 15:42:30ID:???0177nobodyさん
2007/10/14(日) 17:41:50ID:???個人で純粋にTOPのPVだけ取りたい人はテキストベースの方が多いんじゃない?
仕事で組む場合100%DBに頼ってる
0178nobodyさん
2007/10/14(日) 17:45:07ID:???それは、独自のロジックを組んで問題になったら、責任が自分の所にくるけど、
DBでやってトラブったら、Oracleの営業を呼んで扱き下ろしてやれば良いという姑息な打算から???
0180nobodyさん
2007/10/14(日) 18:05:50ID:???http://game13.2ch.net/test/read.cgi/mmo/1191276517/
0181nobodyさん
2007/10/14(日) 18:56:39ID:???0183nobodyさん
2007/10/14(日) 20:07:50ID:???アクセスログをDBに放り込んで、解析結果のひとつとして
トップページのアクセスカウントとか得てるからじゃないの。
0184nobodyさん
2007/10/14(日) 20:21:43ID:???ttp://weblog.riok.net/2006/09/mcrypt.php
復号化した際、データの最後にゴミが残ってしまいます。
このゴミを取り除く方法はありますでしょうか?
0185nobodyさん
2007/10/14(日) 20:37:28ID:???0186nobodyさん
2007/10/14(日) 22:25:46ID:T+RuNK/v30個ほどある$_POST{"***"}をfunctionに入れて各スクリプトより使いたいんですが
function ($_POST){
$a = $_POST{"a"};
$b = $_POST{"b"};
$c = nl2br($_POST{"c"});
$d = round($_POST["d"});
〜
return true;
}
こういう風に書いたんですけど、returnで返って来ません。
return $a,$b,$c…っていう風に書くとエラー出ますし
return array($a,$b,$c…)って風に配列に入れる以外方法無いんでしょうか?
0187nobodyさん
2007/10/14(日) 22:31:27ID:???$a〜$dを初期化しといて
function hoge() {
global $a;
〜
global $d;
(処理)
return;
}
とすればいいんじゃないか?
ちなみに$_POSTは引数として与えなくてもスーパーグローバルだから。
0190nobodyさん
2007/10/14(日) 22:35:42ID:???0191nobodyさん
2007/10/14(日) 22:36:09ID:???調べてみます
Javascriptだとreturn[a,b,c,d]が効いたのに
なかなかPHPは難しいすねー
0192nobodyさん
2007/10/14(日) 22:37:34ID:???すりゃいいじゃん
0193nobodyさん
2007/10/14(日) 22:38:39ID:???最初から$arr['a']〜$arr['b']とかしといた方がまだマシだろうけどねw
0194nobodyさん
2007/10/14(日) 22:43:19ID:???return $a;
return $b;
return $c;
って書けば完璧じゃね?
0195nobodyさん
2007/10/14(日) 22:43:35ID:???0196nobodyさん
2007/10/14(日) 22:43:36ID:rdw+jS+bfunction hoge(&$a,&$b,&$c) {
$a=$_POST["a"];
$b=$_POST["b"];
$c=$_POST["c];
}
参照だろ
0197nobodyさん
2007/10/14(日) 22:44:49ID:???0198nobodyさん
2007/10/14(日) 22:46:14ID:???0199nobodyさん
2007/10/14(日) 22:48:15ID:???0200nobodyさん
2007/10/14(日) 22:48:56ID:???0202nobodyさん
2007/10/14(日) 22:50:05ID:???0203nobodyさん
2007/10/14(日) 22:51:54ID:???0205nobodyさん
2007/10/14(日) 23:17:05ID:???$a = $_POST["a"];
$b = $_POST["b"];
$c = $_POST["c"];
$d = $_POST["d"];
$e = $_POST["e"];
$f = $_POST["f"];
$g = $_POST["g"];
$h = $_POST["h"];
$i = $_POST["i"];
$j = $_POST["j"];
$k = $_POST["k"];
$l = $_POST["l"];
$m = $_POST["m"];
$n = $_POST["n"];
$o = $_POST["o"];
$p = $_POST["p"];
$q = $_POST["q"];
$r = $_POST["r"];
$s = $_POST["s"];
$t = $_POST["t"];
$u = $_POST["u"];
$v = $_POST["v"];
$w = $_POST["w"];
$x = $_POST["y"];
$y = $_POST["x"];
$z = $_POST["z"];
$a1 = $_POST["a1"];
$a2 = $_POST["a2"];
$a3 = $_POST["a3"];
$a4 = $_POST["a4"];
return true; }} # 30個の例。どう考えてもおかしいだろ。(行多すぎてここにしかコメント書けんw)
0206nobodyさん
2007/10/14(日) 23:18:20ID:???0207184
2007/10/14(日) 23:20:28ID:???アップしてきます
ありがとうございました。
ちなみにテンプレsage進行になってるんだけど、
やっぱりあげるべきだった?
0208nobodyさん
2007/10/14(日) 23:21:23ID:???0209nobodyさん
2007/10/14(日) 23:58:32ID:???return array($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l,$m,$n,$o,$p,$q,$r,$s,$t,$u,$v,$w,$y,$x,$z,$a1,$a2,$a3,$a4);
これ↓はダメなの?(エラー?)
function hoge(){
$hash["a"] = $_POST["a"];
$hash["b"] = $_POST["b"];
(中略)
$hash["a4"] = $_POST["a4"];
return $hash;
}
0210nobodyさん
2007/10/15(月) 00:19:40ID:???馬鹿じゃねえのおまえら。
0211nobodyさん
2007/10/15(月) 00:36:06ID:???0212nobodyさん
2007/10/15(月) 00:37:32ID:???だったら最初から$_POSTのままでアクセスすりゃいいのでは…
どうしてもグローバル変数に入れたいってなら
function hoge() {
foreach($_POST as $k => $v) {
$GLOBALS[$k] = $_POST[$v];
}
}
とか。
つーかこれ、ぶっちゃけextract()でいいじゃん。
ま、上の関数ならちょっといじればキーに制限とかも加えられるけど。
0213nobodyさん
2007/10/15(月) 00:51:10ID:???0215nobodyさん
2007/10/15(月) 00:53:44ID:pvBXefedこんど新しいサービスを始めるってことで、会員登録ができるように
システムの変更を任されたのですが、ユーザーIDを漢字でも平仮名でも
いける様にしろと役員からの命令で作っているのですが、
こんな仕様で支障はないですか?
ユーザーIDに漢字を使った記憶が私自身無いので、違和感が多少あります。
普通にはあまりないけど、特に問題ないってことであれば良いとは思うんですが。
0216nobodyさん
2007/10/15(月) 01:21:30ID:???気持ちがいいとは思えないが、まぁいいんじゃない
それでいいなら
0217nobodyさん
2007/10/15(月) 01:22:02ID:???0218nobodyさん
2007/10/15(月) 01:24:27ID:???多分技術知らん役員が、指示してるんだから、言葉通りじゃなく意味を察してやればいい。
おそらく、IDっていうかニックネームくらいの意味合いでしょ。
実際のIDは別に数字で作っておけば仕様変更に耐えて拡張できるじゃない。
0219nobodyさん
2007/10/15(月) 01:37:38ID:???鬼子乙
0220nobodyさん
2007/10/15(月) 01:46:20ID:???0221nobodyさん
2007/10/15(月) 02:22:54ID:???0222nobodyさん
2007/10/15(月) 02:44:11ID:???これを
---------------------------------------
Date: Sun, 14 Oct 2007 17:40:56 GMT
Server: ***
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4486
Connection: close
Content-Type: text/html; charset=utf-8
200 OK
---------------------------------------
下記のようにしたい。
---------------------------------------
Date: Sun, 14 Oct 2007 17:36:23 GMT
Server: ***
Etag: f55e173eaf6d08418edc18ac4df2752d
Content-Type: text/html; charset=utf-8
200 OK
---------------------------------------
session_start();
するとついてしまうものですか?
0223nobodyさん
2007/10/15(月) 02:47:04ID:???0224nobodyさん
2007/10/15(月) 02:50:55ID:???0226nobodyさん
2007/10/15(月) 05:41:13ID:tolXaTNQという配列があったとして、配列の指定番号を
別の文字列に置き換えるには、どうしたらいいのでしょうか?
0227nobodyさん
2007/10/15(月) 05:57:15ID:rCD/KqUy<br>©
これを
%3Cbr%3E%26copy%3B
このようにcookieに保存させたい場合どのようにしたらいいですか?
0228227
2007/10/15(月) 06:04:35ID:rCD/KqUycookieに%3Cbr%3E%26copy%3Bを保存したのですがhtmlに表示するにはどうしたらいいですか?
htmlspecialcharsをやってみたのですが<br>だけ表示され、©が表示されません。
0229227
2007/10/15(月) 06:09:03ID:rCD/KqUyありがとうございました☆
0230227
2007/10/15(月) 06:23:10ID:rCD/KqUyまた別の問題でした><シクシク
0231nobodyさん
2007/10/15(月) 06:23:13ID:???まずはマニュアル見なよ
>>1のマニュアルで「配列」あたりで探してみな。
右上の検索窓で array で検索するのもいいかもね。
0233227
2007/10/15(月) 06:51:00ID:rCD/KqUyありがとう!
配列で検索したら解決しました☆
0234nobodyさん
2007/10/15(月) 08:29:23ID:rCD/KqUy0235435
2007/10/15(月) 09:12:11ID:???$array = array("別のkey1" => "あああ", "別のkey2" => "いいい", "別のkey3" => "ううう");
■ このスレッドは過去ログ倉庫に格納されています