【PHP】下らねぇ質問はここに書き込みやがれ 65
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2008/02/24(日) 21:03:17ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 64
http://pc11.2ch.net/test/read.cgi/php/1202536271/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0802nobodyさん
2008/03/12(水) 22:41:25ID:frkhoFZAクラスをnewしたままプログラムを終了しているのですが、
Javaみたいにオブジェクトを破棄する処理をしないといけないのでしょうか?
メモリーに使わなくなったオブジェクトがどんどん溜まって
メモリーの使用量がどんどん上がってことはありますか?
実は、時間が経過するについてメモリーの使用量が増えていき、
ある一定の使用量になると何もしていないのに勝手にapacheの再起動されます。
原因として考えられるのがこれくらしか思いつきません。
宜しくお願いします。
0803nobodyさん
2008/03/12(水) 22:56:45ID:???0804nobodyさん
2008/03/13(木) 00:08:01ID:r9ewSs4Nphp_openssl.dll を有効にして fsock を使用するのと、
php_curl.dll を有効にして、cURL を使う方法、
どちらの方が良いのでしょうか?
0805nobodyさん
2008/03/13(木) 00:13:12ID:???0806nobodyさん
2008/03/13(木) 00:42:40ID:???内部では使用していないクラスやオブジェクトを、自動的に破棄してくれる機能はありますが
即時性はなく一定時間キャッシュされてしまいます
ですので、メモリーの節約や行儀的には明示的に開放しないといけません
0807nobodyさん
2008/03/13(木) 00:46:28ID:???作り方次第では永遠に開放されない場合はある
(保持されたままガンガン新しく作り続ける)
0808nobodyさん
2008/03/13(木) 01:22:59ID:???> ある一定の使用量になると何もしていないのに勝手にapacheの再起動されます。
apacheが再起動するのか、
PHPがapacheに再起動させられるのか
日本語でおk?
apacheの設定といろんなモジュールとアプリによっては、
プログラムを終了しても、メモリーがどんどん増えるなんて現象
ありえるかもしれんが、普通はないんじゃない?
いろいろ使っていれば、まずそっちを疑うだろうし。
サーバーとかOSとかアプリの仕様とか、情報が足りなすぎ。
あとPHPでもJavaでもクラスをnewしたまま終了しても一般的には問題はない。
パフォーマンスに関係することもあるが、不具合的な現象が起こることはない。
0809nobodyさん
2008/03/13(木) 01:29:47ID:???何度も呼び出して実行していると使用メモリが増大するのかも良くわからん。
前者なら、メモリリークが発生する事があるのは自明。
後者なら環境変えても発生するのか知りたいところ。
0810778 はな
2008/03/13(木) 01:51:47ID:???ありがとうございました!
できました(^^)
>788、>789
すいません、言われて気が付きました!
ありがとうございました!
0811nobodyさん
2008/03/13(木) 01:52:09ID:Kk2Hpxcbこうゆう奴が平気でメモリリークするプログラム組むんだよな・・・
0813nobodyさん
2008/03/13(木) 02:11:58ID:???アドバイス色々とありがとうございます。
オブジェクトについては、プログラマムを終了した時点で、
破棄される又はいつでも破棄されるうる状態に遷移するんですね。
メモリー使用率を監視していると、時間の経過とともに増えていきます。
そして、一定の使用率(20%)を超えた位でapacheが再起動します。
その瞬間メモリー使用率が10%前後になります。そして又増えるのサイクルです。
となると、やはりphpが原因としか考えられない気がします。
セマフォ関係のphpのメモリ関数は使っていません。
OSもFreeBSD6.2Rの安定バージョンを使っています。
また、特定のスクリプトが長時間動いているということはありません。
開発環境はWindowsを使ってやっていますが、
ここでも不具合は出来ます。ある一定の時間がたつとDBへの接続エラー※が発生して、
そのときもapacheを手動で再起動しないとDB関係の処理は全て失敗します。
※接続エラーは、接続は出来るもののTBLからデータが取得できません。apache再起動でTBLへ接続可能です。
あれ、もしかしてもPDOかな?PDOを使い初めて少し立った位からそういう症状になったような。
構成をちょくちょく変えているので、どれが原因が検討が付かないです・・・
0814nobodyさん
2008/03/13(木) 02:29:56ID:???0815nobodyさん
2008/03/13(木) 03:30:37ID:???0816nobodyさん
2008/03/13(木) 04:02:21ID:???オブジェクトの扱い方が悪いんじゃない?
0817nobodyさん
2008/03/13(木) 11:07:35ID:???終了してもメモリリークしたりしたら、PHP言語で書いたコードに
問題があることは無いだろう。使用しているモジュールか
apacheそのものに根本的な問題がある。
その問題を回避する為にPHP言語で書いたコードを修正することは
あるだろうが、あくまで根本的な問題はPHP言語で書いたコードには無い。
0818nobodyさん
2008/03/13(木) 11:27:55ID:???0819nobodyさん
2008/03/13(木) 11:28:34ID:Kk2Hpxcbsingleton実現するためにmemcached入れたりとか。キャッシュ系だな。
>>813はDBコネクションが切れてないだけのようだが。
0821nobodyさん
2008/03/13(木) 11:43:31ID:???>>802を読め。終了する と書いてあるだろ。
たしかに終了させない方法もあるが、
そういうことをしていれば、普通自分で気づくだろ?
0822nobodyさん
2008/03/13(木) 11:57:11ID:???php.iniのメモリ使用量が少ないんじゃねぇの?
4と5じゃ大違いだし。
0823nobodyさん
2008/03/13(木) 12:21:35ID:???リモートデバッグonにしてみるとか?
http://bobchin.net/xdebug/docs-settings.html#debugger
0824nobodyさん
2008/03/13(木) 12:37:21ID:???0825nobodyさん
2008/03/13(木) 12:38:48ID:???0827nobodyさん
2008/03/13(木) 12:41:06ID:???0828nobodyさん
2008/03/13(木) 12:45:46ID:???0829nobodyさん
2008/03/13(木) 12:46:32ID:???もしメモリ制限がかけられているPHPで、
再帰ループでメモリ食いつぶしてOS落としたのなら、
確かに、それはお前だけだろうなw
0830nobodyさん
2008/03/13(木) 12:55:36ID:???正直、落ちる理由がよくわからないが再帰を使わないようにすれば落ちなくなったw
ログを見た限りではswap領域が確保できないからhttpdを殺す!ってメッセージが残って
その後音信不通になっている
0831nobodyさん
2008/03/13(木) 12:59:19ID:???メモリ制限かけてあるから、設定以上の領域が確保できなくて落ちた?
0833nobodyさん
2008/03/13(木) 13:43:59ID:???phpとApacheの設定を怪しんだ方が正解だな。
0835nobodyさん
2008/03/13(木) 14:06:08ID:+qmn4vHFyoutube APIのvideos.list_by_tagで検索って
upload_timeの順に取得できないの?
http://www.youtube.com/dev_api_ref?m=youtube.videos.list_by_tag
普通に引っ張ると関連度の高い○○件引っ張ってから
それをソートして1番に持ってくるとかしかできなくて不便だし
引っ張った○○件中のアップロード時間が一番最近の物しか引っ張れない。
http://www.youtube.com/rss/tag/タグ.rss
こんな感じにすれば最新の物引っ張れるが
これだとAPIの機能と混ぜなきゃいけないからめんどう。
どうしたものか。
0836nobodyさん
2008/03/13(木) 14:07:13ID:???プロセスが消えるから再起動したと勘違いしてるとかw
0837813
2008/03/13(木) 15:27:05ID:OwBZy3+Jバージョンは書き忘れてしました。すみません。5.2.5です。
>>822さんへ
>>php.iniのメモリ使用量が少ないんじゃねぇの?
>>4と5じゃ大違いだし。
php.iniでメモリー使用量というのは、
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)
のことでしょうか?
とりあえず、これを上げてみて様子をみてみます。
>>814さんへ
パフォーマンス向上のためコネクションプールを使っていますが、
メモリーに常住するといういみではこれも怪しいですね。
一回解除してみます。
>>836
apcheのログを見ると、リスタートしているログが残っていますし、
Apache Server Statusのrestar timeとも合致します。
MRTGでリソース監視していますが、httpdのプロセス数やCPUの使用率をみても、
強制再起動と因果関係がなさそうです。
>>819さんへ
>singleton実現するためにmemcached入れたりとか。キャッシュ系だな。
phpにキャッシュする実装はしていないです。代わりに、MySQLのMEMORYテーブルを作って高速化はしています。
設定を変えて1日、2日様子を見て、またご報告させて頂きます。
障害の切り口がお陰で分かりました。どうもありがとうございました。
0838nobodyさん
2008/03/13(木) 16:49:31ID:???実はlogrotateとか、MaxRequestsPerChildとかで殺されてるってことは無いの?
可能ならgdbをサーバプロセスにアタッチして監視するとかしたら?
0839nobodyさん
2008/03/13(木) 18:37:21ID:9PIbKVj5{
public function TEST()
{
}
}
これでpublic functionの部分で、
Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION
とエラーが出てしまいます。
function TEST()
{
}
にするとエラーはなくなりました・・・。
publicは使えないのでしょうか?
0840nobodyさん
2008/03/13(木) 18:39:06ID:9PIbKVj5new Hoge();
でこのエラーが出ます・・・。
0842nobodyさん
2008/03/13(木) 18:42:31ID:9PIbKVj5PHP 5.5.2
Apache 2.2
何かすごく初歩的なミスをしているような気がしなくもないですorz
0843nobodyさん
2008/03/13(木) 18:45:08ID:???0845nobodyさん
2008/03/13(木) 18:46:24ID:9PIbKVj50846nobodyさん
2008/03/13(木) 18:49:11ID:???publicとfunctionの間が全角スペースになってたとかない?
0847nobodyさん
2008/03/13(木) 18:50:59ID:9PIbKVj5今後気をつけます・・・。
Eclipseって全角半角わかりづらいっすね
0848nobodyさん
2008/03/13(木) 18:55:13ID:???β版でもあるのかと思ったけど、やっぱりないっぽい。
googleでヒットしたのはただのタイプミスか。orz
0849nobodyさん
2008/03/13(木) 19:33:19ID:Mmit1vUpアクセスランキングをぐちゃぐちゃにする方法があるようですが、
あれってどういうことをやっているのか教えてもらえませんか
0851nobodyさん
2008/03/13(木) 19:39:22ID:Mmit1vUpすいません書き方が悪かったですね
リファラスパムそのものの方法を聞いているのです
0852nobodyさん
2008/03/13(木) 19:43:25ID:Mmit1vUpいま必死に調べてるのかな?
もう少しだけ待ってあげるからね
俺に質問を訂正させる手間かけさせたんだからきちっと答えろよ
無理なら許すけどさ
0853nobodyさん
2008/03/13(木) 19:51:28ID:???0854nobodyさん
2008/03/13(木) 19:53:59ID:Mmit1vUpぬひんおでおk
0855nobodyさん
2008/03/13(木) 21:10:20ID:Kk2Hpxcb0857nobodyさん
2008/03/13(木) 22:11:44ID:???| ノ ヽ !
/ ● ● | こいつすげぇアホ
| ( _●_) ミ
彡、 |∪| / .\
/ __ ヽノ / \ ...\
(___) / .│ ..│
│ │
/ ヽ
l..lUUU
.U
0858nobodyさん
2008/03/13(木) 22:21:49ID:???| ノ ヽ !
/ ● ● | ?
| ( _●_) ミ
彡、 |∪| / .\
/ __ ヽノ / \
0859nobodyさん
2008/03/13(木) 23:52:30ID:???0860nobodyさん
2008/03/13(木) 23:57:20ID:KzoZRqtO0861nobodyさん
2008/03/14(金) 00:20:41ID:CVUKE/w5php6はIE6までしか対応していない。
IE7であればphp7が出るまで待つしかない。
0862nobodyさん
2008/03/14(金) 00:25:13ID:TU1K9tdo教科書的な答えありがとうございました
0864nobodyさん
2008/03/14(金) 00:53:19ID:???なんかプラグインとか入れなきゃダメなの?
0866nobodyさん
2008/03/14(金) 01:02:38ID:???うわ、マジかよ…orz
IE7でも問題なく見れてたからこれでいいのかと思ってた・・・
ちょっとググってくる。ありがとう。
0867nobodyさん
2008/03/14(金) 01:07:22ID:???0868nobodyさん
2008/03/14(金) 01:34:38ID:mBxJ6iKU$array['a']['b']['c']という値を返したいと思っています。
-をexplodeして一つ一つの要素に分解するまでは良いのですが、
渡される引数の数が決まっていません。よって a もあれば a-b-c-d もあります。
これをうまい具合に解決する方法はありませんでしょうか?
わかりにくい文章ですみません。
0869nobodyさん
2008/03/14(金) 01:35:46ID:???.netじゃないんだからw
0871nobodyさん
2008/03/14(金) 02:10:24ID:???0872nobodyさん
2008/03/14(金) 03:07:34ID:???$array['a']['b']['c']
これって3次元配列って意味?それとも
$array = array("a","b","c");
の事?
とりあえず3次元だった場合のあれ
function hoge($str, $delimiter = "-")
{
$ary = explode($delimiter, $str);
if (is_array($ary) == false)
{
return false;
}
$ret = array ();
$cnt = 0;
do
{
$ret = array(array_pop($ary) => $ret);
}
while (0 < count($ary));
return $ret;
}
0873nobodyさん
2008/03/14(金) 03:26:01ID:???これでどう?
$list = array(1,array(2,3,array(4,5)),6);
echo getValOf($list, '1-0').'<br/>'; // 2 が表示される
echo getValOf($list, '1-2-1').'<br/>'; // 5が表示される
function getValOf($list, $path) {
foreach(explode('-',$path) as $key) {
$list = $list[$key];
}
return $list;
}
0876nobodyさん
2008/03/14(金) 04:36:37ID:???874ではないが
call_user_func_arrayってーのを使えばできる
第1に関数名、第2にパラメータの配列
まぁこんな事するなら普通に配列渡せって感じだし
こんな変な設計になるのは何かが間違ってるとしか思えんがw
0878nobodyさん
2008/03/14(金) 09:05:03ID:???0879868
2008/03/14(金) 12:27:35ID:mBxJ6iKUまた、第一引数にはarrayも渡せる仕様にしました。
オブジェクト的な配列にアクセスするために -> のような視覚的効果が欲しかったって言うだけです。
皆様有り難う御座いました。
0880nobodyさん
2008/03/14(金) 13:31:04ID:DyyjdTiB10010010
1にマッチする場所のアルファベットを取得したいんですが、
そんな感じの変数ってありませんでしたっけ・・・?
何か以前に近いことができたような・・・
0881nobodyさん
2008/03/14(金) 13:33:53ID:???0882880
2008/03/14(金) 13:37:21ID:DyyjdTiB10010010
ADFを出力
0883nobodyさん
2008/03/14(金) 13:53:21ID:???多分ない
var_dump(hoge("avc","010"));
function hoge($str1,$str2)
{
$ret = '';
foreach (str_split($str2) as $key => $value) {
if ($value != 1) {
continue;
}
$ret .= $str1[$key];
}
return $ret;
}
0884nobodyさん
2008/03/14(金) 13:55:28ID:DyyjdTiB0885nobodyさん
2008/03/14(金) 14:30:09ID:???だったら、数字とアルファベットの桁数を揃えないと分かりずらいだろ。
0886nobodyさん
2008/03/14(金) 14:48:15ID:???0887nobodyさん
2008/03/14(金) 15:29:59ID:???周りにエロい人がいないので
ここでアドバイスを願います。
PHPのSESSIONIDを推測して同時にアクセスしている人に
なりすますことは可能でしょうか?偶然を除いて。
0889nobodyさん
2008/03/14(金) 15:45:40ID:???まぁ一応可能っちゃ可能かな?
0890nobodyさん
2008/03/14(金) 16:00:45ID:drEqqpJQ0891nobodyさん
2008/03/14(金) 16:11:32ID:???不可能である事は証明できないだろうけど、オライリーの「入門PHPセキュリティ」には、それは現実的なリスクでは
ないと書かれてる。もっともほかの事を気にしろと。
とりあえず見つけたページも貼っとく。
http://tdiary.ishinao.net/20061120.html
0892nobodyさん
2008/03/14(金) 16:32:13ID:???sessionidの生成ロジックから、
同一ホスト同時アクセス時のユニーク性も証明できないって、
なんちゃって技術者か。
最近、この手のコンピューターの基礎理論や数学的な教養もない技術者が増えていて嘆かわしい。
業界人口が急速に増えると、人材の劣化が激しいことの証左だな。
0893nobodyさん
2008/03/14(金) 16:37:39ID:???0895nobodyさん
2008/03/14(金) 17:03:31ID:???ユニーク性の証明から、予測の困難性を演繹的に証明できるだろ。
お前は、どういうアプローチで予測の困難性を証明しようとしているの?
0896nobodyさん
2008/03/14(金) 17:12:12ID:???0898nobodyさん
2008/03/14(金) 17:32:17ID:???0899nobodyさん
2008/03/14(金) 17:56:48ID:???ターゲットにしているユーザーのパソコンに外部から接続して、乗っ取りが成功すれば
ブラウザが使用しているメモリ領域から情報を引き出せる
それを元にすれば早いだろw
0900nobodyさん
2008/03/14(金) 17:59:56ID:???レス数が900を超えています。1000を超えると表示できなくなるよ。