トップページ⇒php
1001コメント296KB

【PHP】下らねぇ質問はID出して書き込みやがれ 106

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/04/29(金) 17:11:00.40ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 105
http://hibari.2ch.net/test/read.cgi/php/1300302034/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0577nobodyさん2011/05/23(月) 07:35:09.98ID:???
>>576
お前誰だよw
>>556になりすましてるつもりか知らんが当人は>>559で訂正してるからバレバレw
0578nobodyさん2011/05/23(月) 11:15:25.44ID:???
未だにmb_send_mail使う男の人って・・・
0579nobodyさん2011/05/23(月) 11:52:46.60ID:???
mb_send_mailって女性向けなんですか
0580nobodyさん2011/05/23(月) 11:59:12.06ID:???
>>577
なりすましw
ネタレスに食いつくとか…え、もしかして?
0581nobodyさん2011/05/23(月) 12:05:52.72ID:???
>>580
なりすましって言う奴がなりすまし
というのが2chのルール
0582nobodyさん2011/05/23(月) 12:31:37.63ID:???
>>579
mb_send_male
が男性向け。
mb_send_f
0583nobodyさん2011/05/23(月) 12:57:40.94ID:???
mb_send_shemale関数で送って欲しい
0584nobodyさん2011/05/23(月) 17:23:05.29ID:???
shemale?
0585nobodyさん2011/05/23(月) 17:24:06.67ID:???
ladyboy
0586nobodyさん2011/05/23(月) 17:25:50.59ID:???
ladyborden
0587nobodyさん2011/05/23(月) 20:05:22.14ID:???
ボーゲン パラレル ウェーデルン
0588nobodyさん2011/05/23(月) 23:02:06.42ID:d2ZK5Ldr
cronを使う代わりに、imgタグをPHPで作ってそこで実行させるやり方があります。
しかし、処理に時間がかかる場合は、ブラウザがずっと読み込み状態になります。

これは、バックエンドで実行できないので仕方ないのでしょうか?
execを使ってバックエンドで実行する方法もあるようですが・・・
0589nobodyさん2011/05/23(月) 23:09:57.79ID:???
それでなんでだめなの?
0590nobodyさん2011/05/23(月) 23:22:17.87ID:???
>>588
JavaScriptのXMLHttpRequestでPHPを非同期実行すれば?
0591nobodyさん2011/05/23(月) 23:28:31.02ID:d2ZK5Ldr
>>589
開発はWindowsでやってまして・・・

>>590
Ajax使うとかですか?ちょっと試してみます
0592nobodyさん2011/05/23(月) 23:35:13.22ID:???
windowsとか関係ないだろ
セーフモードっていう制限あるなら別だが・・・
0593nobodyさん2011/05/23(月) 23:40:01.66ID:???
windowsとか関係ないだろ
0594nobodyさん2011/05/23(月) 23:42:26.78ID:d2ZK5Ldr
>>590
jQueryのAjaxでやってみたのですが、10秒sleepかけたら
結果が表示されるまで10秒待たされますね・・・
0595nobodyさん2011/05/23(月) 23:44:39.80ID:d2ZK5Ldr
>>592-593
予約フォームでも作って配布しようと思ってるのですが、
execってサーバの仕様によりますよね?Windowsは関係ないにしても。
ですので、難しいかな?と思っております。
0596nobodyさん2011/05/24(火) 00:08:51.31ID:???
windows鯖ならタスク使えばいいだろ
0597nobodyさん2011/05/24(火) 00:27:36.68ID:???
>>594
それはJavaScript側のイベントタイミングが悪いだけでは
0598nobodyさん2011/05/24(火) 01:47:53.52ID:???
>>595
curl_multi_*系使えば?ソース切り分けるのが大変なら
あとは頑張れとしか言いようがないが・・・
0599nobodyさん2011/05/24(火) 03:25:16.83ID:jZjKrKf9
【OS名】Apache
【PHPのバージョン】5.2.5
【連携ソフトウェア】なし
【質問内容】
mb_convert_encodingでShift_JISの文章をUTF-8にすると
�Uが?に、〜が?に変わる等、もとの文字から変化してしまうんですが
これを防ぐ方法はありますかね?
SJIS→EUCだと無問題でしたが、UTF-8で組み上げてしまったので今更此処だけのために変えたくないのです。

元データはShift_JISから変更できないものとして下さい。
対策法ありましたら教えていただきたく思います。
06005992011/05/24(火) 03:26:18.70ID:jZjKrKf9
訂正。
�Uが?に、〜が?に
06015992011/05/24(火) 03:27:21.80ID:jZjKrKf9
どうも表示出来ないようですので…
〜が「wikipediaで〜の代わりに利用されている記号」でお願いします。
0602nobodyさん2011/05/24(火) 04:22:29.42ID:???
>>601
mb_convert_encoding(mb_convert_encoding($str,"sjis-win","SJIS"),"UTF-8","sjis-win");
0603nobodyさん2011/05/24(火) 04:28:16.89ID:???
あー。
「〜」ってめんどくさいよ。波ダッシュ問題とかその辺で調べるとでてくると思う
0604nobodyさん2011/05/24(火) 04:30:56.85ID:???
>>601
間違えた。これでOK
$str = mb_convert_encoding($str,"UTF-8","sjis-win");
0605nobodyさん2011/05/24(火) 04:35:08.00ID:???
ちなみに「〜」の反対の波ダッシュはshiftJISには存在しないはずだよ
0606nobodyさん2011/05/24(火) 10:35:42.44ID:B17q1BJi
相対パスからURLを得るような関数ってありますか?

http://localhost/hoge/hage/index.php
にアクセスして
echo some_function("../");
とすると
http://localhost/hoge/が返ってくるような関数を希望しています
realpathはちょっと違うみたいなので
0607nobodyさん2011/05/24(火) 11:33:03.76ID:???
>>606
少しはググったら?「url取得 php 相対」
0608nobodyさん2011/05/24(火) 11:47:09.98ID:B17q1BJi
もちろんググりましたよ
ただ標準関数があるかないかだけ知りたかったので

ググった先の人は自作関数つくってましたが
ドキュメント不足であまり知られてない関数も多数あるので
知ってる人いないかな?と思って聞きました
0609nobodyさん2011/05/24(火) 11:53:06.86ID:???
ドキュメント不足wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0610nobodyさん2011/05/24(火) 12:00:28.73ID:B17q1BJi
実例だすと
http://www.php.net/manual/ja/reflector.export.php
こんなのとか
>この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。
とサマリーが書かれてないやつですね
0611nobodyさん2011/05/24(火) 12:17:49.41ID:???
>ただ標準関数があるかないかだけ知りたかったので
そのような内部(ビルトイン)関数は無い
06126082011/05/24(火) 12:23:32.00ID:B17q1BJi
>>611
ありがとうございます
おとなしくPHPで実装しますか
0613nobodyさん2011/05/24(火) 12:26:44.38ID:???
それか諦める
0614nobodyさん2011/05/24(火) 12:27:00.31ID:???
どうせNet_URLあたりで一瞬でしょ
0615nobodyさん2011/05/24(火) 12:39:17.62ID:???
一方ロシアはdirnameを2回呼んだ
0616nobodyさん2011/05/24(火) 13:03:46.05ID:???
dirname関係ないでござる
0617nobodyさん2011/05/24(火) 13:22:12.72ID:4tHNdJ+f
ニコ生からコメントを取得したいのですがうまくとれません
どなたかご教示お願いします

$svr = "msg103.live.nicovideo.jp";
$port = "4桁の数字";
$thread = "数字";

$fp = @fsockopen ($svr, $port, $errno, $errstr);

if (!$fp) {
echo "Error:{$errno}, {$errstr}\n";
return false;
}

fputs($fp, "<thread thread=\"{$thread}\" res_from=\"-200\" version=\"20061206\" \/>\0");

while(true){
while(!$char = fgetc($fp)){
echo $char;
}
sleep(2);
}
socket_close($fp);
06185992011/05/24(火) 13:40:24.73ID:jZjKrKf9
>>602-604
ありがとうございます。
SJISと思い込んでおりましたがSJIS-winだったようですorz
PHP以前の問題に回答していただき有難う御座いました。
0619nobodyさん2011/05/24(火) 16:53:51.35ID:???
GZIPの展開処理でdataスキームを使うとエラーが出る環境があります。
エラーが出た場合、tempファイルを一旦作ってから処理しているのですが、
dataスキームが使える環境と使えない環境の違いがわかりません。
どなたかご教示ください。

// エラーが出ることがある部分
$zp = @gzopen('data:application/x-gzip;base64,'.base64_encode($gzbody), 'rb');
//$zp = @fopen('compress.zlib://data:application/x-gzip;base64,'.base64_encode($gzbody), 'rb'); // これも同じ
0620nobodyさん2011/05/24(火) 16:54:31.46ID:b9bCoq0a
ID忘れてました
06216192011/05/24(火) 16:56:39.02ID:???
【確認した環境】
× CentOS PHP5.1.6
○ WindowsXP PHP5.3.5
0622。 ◆oDupeixhZv52 2011/05/24(火) 17:17:17.73ID:???
http://www.php.net/manual/ja/zlib.installation.php
06236192011/05/24(火) 17:52:20.30ID:???
ありがとうございます。
php -i | grep configure | sed -e 's/ /\n/g' | grep zlib
で --with-zlib は確認できます。
0624nobodyさん2011/05/24(火) 20:24:43.45ID:???
dataは5.2からです
0625nobodyさん2011/05/24(火) 20:35:47.52ID:???
http://www.php.net/manual/ja/wrappers.data.php
はっておきますね
06266172011/05/24(火) 20:37:24.93ID:???
どなたかお願いします
0627nobodyさん2011/05/24(火) 20:45:47.29ID:???
うまくとれませんじゃ解りません
もうちょっと原因の切り分けをすべきです
ぱっと見で言えば、無限ループじゃね?という感じか
Cとかみたいに随時出力とかはそれでは出来ないけど
0628nobodyさん2011/05/24(火) 20:57:25.74ID:???
>>626
ニコ生の規約に違反するので教えられません
0629nobodyさん2011/05/24(火) 21:05:09.24ID:???
バカばっかだなwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0630nobodyさん2011/05/24(火) 21:30:25.46ID:???
お前モナwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0631nobodyさん2011/05/24(火) 21:37:23.37ID:???
さすがに>>627はコードを読んでないし>>628はapiも知らない無知
こいつらのせいでPHPスレの回答者はなめられていい迷惑だ
0632nobodyさん2011/05/24(火) 22:40:26.12ID:???
>>631
お前一人のせいで全員が迷惑していることを少しは自覚しろ
0633nobodyさん2011/05/25(水) 00:11:39.33ID:???
>>631
さすがの俺でもコードを読んだら無限ループだったわ
06346192011/05/25(水) 00:15:43.20ID:???
>>624-625
ありがとうございました。
0635nobodyさん2011/05/25(水) 09:42:45.17ID:???
コメントを取得するのに失敗しているのは無限ループの所は関係ないと思うけどな
バカの一つ覚えみたいに無限ループがなんて騒いでるのも己のスキルがバレるよ
0636nobodyさん2011/05/25(水) 11:11:00.56ID:5sX1Dxk4
$query="insert into myblog(title,abstract,context,uptime)";
$query .="values(\"" .$url. "\",\"".$data."\",\"".$data."\",CURDATE())";
こんな感じでinsertしてるのですがうまくいきません
すいませんがどなたがご教示下さい
0637nobodyさん2011/05/25(水) 11:24:48.51ID:???
>>636
釣りじゃないならエラーメッセージとテンプレ
エスパーすると $data = mysql_escape_string($data); を実行
0638nobodyさん2011/05/25(水) 11:25:03.75ID:jb860Ok3
memory_limitの値を取得する方法ってないですか?

php.iniでの設定が「512M」になっていると、
ini_get('memory_limit')とすると「512M」と文字列のまま返ってきます。

数値で返ってくるような関数は実装されておりますでしょうか。
(なければ、512Mの文字列を数値に変換する処理が挟むので・・・)

やりたいこととしましては、
大量のデータを取り込む
 ↓
メモリ使用率判定で、80%ほど使われていれば途中でエラーと行番号を出す

memory_get_usage()と比較して判定

宜しくお願いします
0639nobodyさん2011/05/25(水) 11:29:07.96ID:???
>>638
たぶんない
というか、$limit = (int)ini_get('memory_limit'); だけで済むでしょ
0640nobodyさん2011/05/25(水) 11:35:57.00ID:jb860Ok3
>>639
> というか、$limit = (int)ini_get('memory_limit'); だけで済むでしょ

いやそれはないだろwwwwwww
0641nobodyさん2011/05/25(水) 11:38:11.36ID:???
※ここはレベルの低い回答者も顔がデカイので粘着に注意しましょう
 彼らは顔真っ赤になると自分を肯定するために荒らすので注意しましょう
0642nobodyさん2011/05/25(水) 11:42:08.10ID:???
>>641
ね。おちおち質問も出来ん。
0643nobodyさん2011/05/25(水) 11:46:37.53ID:???
>>641-642
>>641-642
>>641-642
0644nobodyさん2011/05/25(水) 12:06:35.76ID:???
>>638
RTFM
http://www.php.net/manual/ja/function.ini-get.php
0645nobodyさん2011/05/25(水) 12:07:34.43ID:???
>>635
>>617のソースのみから考えられるのって無限ループと
fputsしてる部分で \/の\が不要って部分ぐらいだろ。
そしてどの段階でコメントが取得できていないと書いてないから不明
PHPを表示させて取得できないっていうなら無限ループだし
ループ無しの状態でfgetcしてもとれないのかも不明
質問者が手を抜きすぎなんだよ
0646nobodyさん2011/05/25(水) 12:17:41.43ID:???
\0も不要だな・・・。なぜnull文字を・・・。PHPとCは違うぞ。
0647nobodyさん2011/05/25(水) 12:20:57.54ID:???
と思ったら\0はAPIの仕様か・・・。
0648nobodyさん2011/05/25(水) 12:25:22.44ID:???
分かんない奴は黙っててくれよ。。。。スレが汚れるだけだから
0649nobodyさん2011/05/25(水) 12:30:34.02ID:???
分かんない奴はというならお前が答えてやれよw
0650nobodyさん2011/05/25(水) 12:34:40.94ID:JzX2/aKg
$str = "<text></text>";
preg_match("/<text>(.+?)<\/text>/", $str, $m);
print_r($m);

結果はこうなりますが
Array
(
[0] => <text>abc</text>
[1] => abc
)
これをキャプチャするabcだけ取得した形にする方法はありませんか?
0651nobodyさん2011/05/25(水) 12:51:11.80ID:5sX1Dxk4
$query = "insert into myblog (title,abstract,context,uptime)";
$query .= " values (\"" . $url . "\",\"" . $url . "\",\"" . $url . "\",CURDATE())";

こんな形で解決しました
有難う御座いました
0652nobodyさん2011/05/25(水) 12:52:28.00ID:???
>>650
array_shift($m);
0653nobodyさん2011/05/25(水) 12:54:20.44ID:???
$m[1]
0654nobodyさん2011/05/25(水) 13:54:43.50ID:???
この質問定期的にくるね
0655nobodyさん2011/05/25(水) 13:59:17.74ID:???
無限ループ無限ループと馬鹿にするので質問と回答の無限ループを作ってみた
0656nobodyさん2011/05/25(水) 14:20:09.56ID:???
配列が空かどうか調べる方法を教えてください
0657nobodyさん2011/05/25(水) 14:23:26.04ID:vv7yAL0x
$a = array(array(),array(),array());
これが空と判定されて
$a = array(array(1,2,3),array(),array());
が入っていると判定する方法はありませんか?
値は数字とは限りません
0658nobodyさん2011/05/25(水) 14:30:15.42ID:???
>>657
var_dump((bool)array_filter($a, 'count'));
06596172011/05/25(水) 14:55:26.09ID:???
解決できました
fgetcを使ったのがいけないみたいです
0660nobodyさん2011/05/25(水) 15:11:51.33ID:???
>>658
それ面白いね
0661nobodyさん2011/05/25(水) 15:45:03.45ID:???
>>655
回答しないとループしないぜ。
俺は今回回答しないことに。てか、過去ログ見ろって思うよね。
0662nobodyさん2011/05/25(水) 15:49:58.98ID:???
さすがに無限ループが原因と思ってる回答はねーわな
0663nobodyさん2011/05/25(水) 17:40:34.17ID:???
$a = array(1,2,3,4,5,6,7,8,13,24,100,54,23);
配列内の値を2で掛けた値に変更したいのですがどうやるのが一番よいですか?
0664nobodyさん2011/05/25(水) 17:43:37.47ID:jb860Ok3
どうやるのが一番良いって言われても・・・。
どういうやり方があって各メリットがあって、それに対して意見求めるならわかるんだが
ただ単に「どうやるのが一番よいですか?」ってただの教えて君にしか見えないよ
0665nobodyさん2011/05/25(水) 17:50:42.86ID:???
無限ループを解凍したあだ名は無限ループ君が荒らしてるのか
0666。 ◆oDupeixhZv52 2011/05/25(水) 17:59:26.70ID:???
>>663
array_walk($a,function(&$v){$v*=2;});
とか
foreach($a as $var=>$val)$a[$var] = $val*2;
0667nobodyさん2011/05/25(水) 18:09:35.07ID:???
>>663
>>658がヒントになりそうだな
0668nobodyさん2011/05/25(水) 19:34:25.69ID:???
>>666
foreachの参照でok
0669nobodyさん2011/05/25(水) 20:11:24.92ID:???
foreach($a as &$v)$v*=2;
0670nobodyさん2011/05/26(木) 04:11:50.15ID:???
キタっ、検索エンジンスパム
http://www.c-recipe.biz/
0671m ◆HtQ8Kj2zzc 2011/05/26(木) 09:19:06.10ID:Hn9Exv6E
【OS名】CentOS release 5.4
【PHPのバージョン】5.1
【連携ソフトウェア】なし
【質問内容】
セッション管理での質問です。

session_start()の後にガベージコレクションが動くと思うのですが以下の状態になって困っています。

ガベージコレクションの実行確立は100%(session.gc_probability=100,session.gc_divisor = 100)
session.gc_maxlifetimeを10秒に設定して1回目の処理でsession_start()時点でセッションファイルを作成。
同じ処理を15秒後に再度実行、session_start()直後に1回目で作成したセッションファイルが削除される。

session_start()の時点でセッションファイルの寿命が伸び、作成から0秒なのでガベージコレクションの
削除対象とはならないと思うのですがこの考え方は間違っていますか?

また、この状態は正常ですか?
回避する方法はありますでしょうか?
0672nobodyさん2011/05/26(木) 11:17:31.15ID:???
>>671
> session_start()の時点でセッションファイルの寿命が伸び、作成から0秒なのでガベージコレクションの
> 削除対象とはならないと思うのですがこの考え方は間違っていますか?
間違っている。
session_start()内の処理順序は、セッションファイルの読み込み→GCの起動。
GCは単純にファイルの更新日時を見て削除する。
セッションファイルの読み込みだけではファイルは更新されないので寿命は延びない。

> また、この状態は正常ですか?
正常。

> 回避する方法はありますでしょうか?
session_start()直後にsession_regenerate_id()を呼べば、
新しいセッションファイルが作成されるのでセッションを継続できる。
他にもあるかもしれないけど知らない。
0673nobodyさん2011/05/26(木) 11:19:13.28ID:???
やったことないけど、間違ってるんのカナ

同じセッションIDでも

不要セッションファイル削除
↓
以前のセッションファイル読込み
↓
新たにセッションファイルに書き込み

てなっとるんかな?わしも知りたい
0674nobodyさん2011/05/26(木) 11:20:38.54ID:???
ほー 逆なのね
0675nobodyさん2011/05/26(木) 11:29:40.63ID:???
知りたいならsession_set_save_handlerあたりをつかって
自分でDBとかに保存するプログラムを書くのが一番理解しやすいと思うよ
0676671 ◆HtQ8Kj2zzc 2011/05/26(木) 12:51:53.70ID:Hn9Exv6E
回答ありがとうございます。

session_start()内の細かい処理はわかりませんが、session_start()が終わった時点でファイルの更新日時は更新されるようです。
GCが別の更新日時を見てるのか…。
セッションファイルの読み込み→GCの起動→セッションファイルの更新という順番なのか…。

そもそも、session_regenerate_id(true)を行ったときに以下のエラーがでたのでこの問題に気づきました。
session_regenerate_id()では問題ないのですが、元session_regenerate_id(true)を利用したいのですよね。

[エラーメッセージ]
Warning: session_regenerate_id() [function.session-regenerate-id]:
Session object destruction failed in ファイル名 on line 42

session_set_save_handlerは試してみます。
■ このスレッドは過去ログ倉庫に格納されています