【PHP】下らねぇ質問はここに書き込みやがれ 65
■ このスレッドは過去ログ倉庫に格納されています
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カテゴリ)の各スレで
0780nobodyさん
2008/03/12(水) 11:06:55ID:???0781nobodyさん
2008/03/12(水) 11:14:03ID:???0782nobodyさん
2008/03/12(水) 11:51:48ID:???最近はそうでもないです
0783nobodyさん
2008/03/12(水) 13:18:34ID:???元の配列作る段階で
array { "banana" => "yellow", "apple" => "red" };
みたいにしておけばいいのに
0784nobodyさん
2008/03/12(水) 13:47:02ID:bPECnjgMこんな感じでマルチバイトで区切れたよね
なぜか
mbregex compile err: empty range in char class
とかエラーが出るんです。
何か使えない文字入っていますか?
0785784
2008/03/12(水) 13:50:01ID:bPECnjgMエスケープしてなかた、ごめんにょ
0787778 はな
2008/03/12(水) 16:06:22ID:DpVFawg8「ereg」 の逆みたいな書き方はありますか?
0789nobodyさん
2008/03/12(水) 16:18:50ID:???!は否定を意味する演算子
eregでマッチするのなら!eregにすればマッチしないという意味になる
基本すよ
0790nobodyさん
2008/03/12(水) 16:47:27ID:???0792nobodyさん
2008/03/12(水) 17:01:20ID:???${sample}
みたいな変数の書き方があるのを初めて知ったのですが、
これは
$sample
とはどう違うのでしょうか??
0793nobodyさん
2008/03/12(水) 17:07:28ID:???詳しくはマニュアルのここ読むとよいですよ
http://jp2.php.net/manual/ja/language.types.string.php#language.types.string.parsing.simple
0794792
2008/03/12(水) 17:17:51ID:???0795nobodyさん
2008/03/12(水) 18:30:32ID:???ON/OFF したいときって、CGI モードを使って
dl() を使う以外に、なにか方法ない?
.htaccess か、ini_set() で何とかなるとよさげなんだけどなぁ。。。
0796nobodyさん
2008/03/12(水) 19:14:37ID:W7u96JdGhogehoge.com - 割り当て - public_html(ディレクトリ)
例えば public_html に入っている test.php の内部に記述すると、
hogehoge.com を自動的に判断して、そこに代入される感じです。
現在共通パーツがあるのですが、置換速度が遅くなるほど
画像、文章、タグが入り込んでいて簡略化したいのですが。
0798nobodyさん
2008/03/12(水) 19:33:14ID:30ilS6/S正規表現でURLからホストのみ抜き出したいんですが
URLを抽出するサンプルしか検索にかからなくて困っております。
「ホスト抽出 正規表現 URL php」などで検索かけてみました。
なので自作関数を作ろうと思ってるのですがホスト名というのは
「//(スラッシュ)」が二回出たところから
「/(スラッシュ)」が三回目に出たところまで
を抽出する考えで間違っていないのでしょうか?
よろしくお願いします。
0800nobodyさん
2008/03/12(水) 19:43:06ID:30ilS6/Sなるほど、このような関数があるのですね。
ありがとうございました。
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にマッチする場所のアルファベットを取得したいんですが、
そんな感じの変数ってありませんでしたっけ・・・?
何か以前に近いことができたような・・・
■ このスレッドは過去ログ倉庫に格納されています