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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2012/11/20(火) 18:02:45.99ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 123
http://kohada.2ch.net/test/read.cgi/php/1348583995/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
0804nobodyさん2012/12/29(土) 19:19:50.52ID:???
何故その前後の行を書こうと思わないのか
0805nobodyさん2012/12/29(土) 19:23:36.36ID:???
つうか>>780で解決するはずだったのになぜか>>781みたいな答えが返ってきたからな
0806nobodyさん2012/12/29(土) 19:24:14.22ID:DQDV95vy
すみません
echo "<p>\n".$sText." <br> ここ </br> </p>\n";
}
?>



date("Y/m/d H:i", strtotime($oStatus->created_at))

を入れると真っ白になってしまいます
<hr>を入れたい箇所はdateの行の下です

前後の行は>>786の通りです
0807nobodyさん2012/12/29(土) 19:25:38.51ID:???
ある程度理解してると思ったらただのコピペ丸投げ厨だったか・・・
>>803を解決したいなら基礎から勉強してこい
0808nobodyさん2012/12/29(土) 19:38:57.47ID:???
つーかDateTimeクラスでやれ
0809nobodyさん2012/12/29(土) 20:46:59.54ID:8IgiEK0o
win sjis(cp932)の日本語ファイル名でc5が出てくるファイルが読めない(file_exists()やfile_get_contents()...)のって、
中の人がファイルパスを展開するときに、単にc5(\)をパスセパレータとしてパスを切ってるからってこと?
\user\home\申請書.pdfだと\usr\home\申\請書.pdfみたいな
これだと中の人を騙さない限り回避策はない??
0810nobodyさん2012/12/29(土) 21:10:50.76ID:???
mb_*は入ってない環境なの?
0811nobodyさん2012/12/29(土) 23:28:16.68ID:???
中の人?c5?
0812nobodyさん2012/12/30(日) 00:13:22.98ID:???
c5は半角カナの何か
5Cが円記号

file_get_contentsが日本語ファイル名を正しく処理できるかの話
0813nobodyさん2012/12/30(日) 00:45:54.49ID:???
>>806
1つだけいいこと教えてあげる
”真っ白になる”ってのは通常起こり得ない
普通はエラーメッセージが出て修正箇所がわかりやすくなる。
たぶんレンサバにさくら使ってるんだと思うけど
さくら PHP エラーでぐぐってエラー出してみればいいよ
0814nobodyさん2012/12/30(日) 00:56:08.52ID:???
>>813
真っ白になることぐらいよくあるよ
display_errors
display_startup_errors
による
開発中は表示したほうがいい
0815nobodyさん2012/12/30(日) 04:00:45.03ID:???
よくはないだろ
PHPのインストール先で.$hoge.なんて引数渡して
syntaxエラーも出ず真っ白になる確率なんて1桁%
日本じゃさくらのシェアが多いから多く感じるだろうけど
あれはCGI版PHPだったり色々他と比べても特殊
0816nobodyさん2012/12/30(日) 04:10:23.02ID:vfz9Ho+1
class内のconstが未定義だとfatalが出ますが、これをcatchする方法ってありますか?
0817nobodyさん2012/12/30(日) 04:32:24.82ID:???
無い。
const 未定義って、そんな状況想像できないんだが
0818nobodyさん2012/12/30(日) 04:36:05.12ID:???
回復できないエラーだからキャッチ出来るようには作ってない。
0819nobodyさん2012/12/30(日) 04:57:26.16ID:???
変数と定数の違いから勉強しやがれですう
0820nobodyさん2012/12/30(日) 07:34:13.52ID:???
fatal 致命的な
0821nobodyさん2012/12/30(日) 10:08:08.65ID:???
>>817
いや、あり得るだろ、普通に。
ひょっとして、constは何のために使うか理解できてない?

>>818
プログラムを理解できてないのか、日本語の文法を知らないのか、どっち?
回復できないエラーだから、キャッチできるけど、あえてしてない。と思ってるの?
キャッチできないから、回復できないんだけど?

>>819
無理にレスしなくていいよ。

>>820
覚えたての英語ですか?
0822nobodyさん2012/12/30(日) 10:21:13.12ID:???
816=817=818=819=820=821
0823nobodyさん2012/12/30(日) 13:12:03.52ID:???
定数未定義なんてありえるの?バグ以前の問題じゃないか。
0824nobodyさん2012/12/30(日) 13:36:49.51ID:???
Javaとかでは例外投げられんの?
0825nobodyさん2012/12/30(日) 14:45:21.23ID:???
>>823
まぁ、constの使い道がただの定義定数だと思ってると、どうして未定義が発生するか想像できないよ。
まぁ、普通は、ちゃんと抽象化してコードの再利用をしてると嫌でも遭遇する。
自社サイトしか作った事がないとか、納品したらもうそれで終わりとかいう、なんちゃってベンダーで働いてたら分からんと思うよ。
0826nobodyさん2012/12/30(日) 14:46:43.41ID:???
Javaはconstは仕様上はあるっぽいけど、実装はされてないよ。
0827nobodyさん2012/12/30(日) 14:51:23.63ID:???
あとheadが、production、staging、develop などと分岐してて、developで作業しながらproductionのデバックも並行して行う。
みたいな、ちゃんとしたプロのプログラマーじゃないと、理解は難しいと思うよ。
0828nobodyさん2012/12/30(日) 14:53:38.31ID:???
JavaはFinal使ってconst代りにしてるな。
つうか、お前らPHPしかできないのかよ!
0829nobodyさん2012/12/30(日) 14:56:43.24ID:???
もしかしてdefinedのこと?
0830nobodyさん2012/12/30(日) 15:46:32.36ID:???
Javaだってそんなアホな実装したらコンパイルエラー出るだろ?
何言ってるか分からん
0831nobodyさん2012/12/30(日) 15:59:28.46ID:RkadAwyD
すみません。PHPに限ったことではないのですが一つ質問させてください。

随時情報が随時更新される部分だけを
ajaxで再度情報を読み込んで部分的に再レンダーをしています。

だいたい5秒につき1回の処理で実施させています。ご察しのとおり1万人がアクセスしていたとしたら
5秒の間にほぼ同時に1万アクセスが集中します。
しかし、チャットのように即時性が求められるものの場合
頻繁な更新が必要になります。

皆さんならどのように対処しますか?

5秒→10秒ロードに伸ばす
鯖の環境を限りなくいいものにする
その他

何かいい案があれば教えてください
0832nobodyさん2012/12/30(日) 16:01:24.88ID:???
>>831
1万人もアクセスするサイトなの?
0833nobodyさん2012/12/30(日) 16:02:12.92ID:???
だから君はまだ、そのステージに登ってないんだよ。
0834nobodyさん2012/12/30(日) 16:03:17.86ID:???
だから君はまだ、そのステージに登ってないんだよ(ドヤァ
0835nobodyさん2012/12/30(日) 16:08:37.79ID:???
>>831
随時更新される部分を非同期I/Oにして、Server-Sent EventsかWebSocket
0836nobodyさん2012/12/30(日) 16:14:37.34ID:RkadAwyD
>>832
はい、一日がだいたい丁度1万PVですね

>>835
やはりWeb socketが定番なのかなぁ
0837nobodyさん2012/12/30(日) 16:15:15.64ID:???
>>836
じゃあ同時アクセス数ははるかに少ないんじゃないの?
0838nobodyさん2012/12/30(日) 16:16:56.91ID:???
>>833
ステージについてkswk
客観的に見て負け惜しみ言っているようにしか見えないぞ
0839nobodyさん2012/12/30(日) 16:31:46.29ID:RkadAwyD
>>837
ただ今後増えていきそうなので
0840nobodyさん2012/12/30(日) 16:49:29.06ID:???
>>825>>827
PHPごときでプロ気取りとか哀れ
0841nobodyさん2012/12/30(日) 17:30:36.73ID:???
>>838
わかんない時点でもうダメだと思うよ。

>>840
あーそれ、言うと思った。プロの意味が分かってないんだよ。日本人は英語が苦手だからね。
0842nobodyさん2012/12/30(日) 17:32:01.83ID:???
>>838
> ステージについてkswk
英語どころかカタカナアルファベットも使えてないじゃん…あいたた
0843nobodyさん2012/12/30(日) 17:39:37.80ID:???
>>838
>>827に書いてあるよ?
バージョン管理とかした事ないとか、TortoiseSVNは使ってるけど、単なるバックアップになってるとか、
svnは単なるコンフリクト回避にしか使ってないとか、
gitを使ったことがないとか、
gitを使ってるけど、使い方がsvnとかわらないとか、
そういうステージに要る人には、どだい理解し難い話だと思うよ。
0844nobodyさん2012/12/30(日) 17:57:21.47ID:isnFcWhy
intとintegerってどう違うの?
公式読んでもよくわからん
0845nobodyさん2012/12/30(日) 17:59:49.54ID:???
>>843
それとconstの未定義がどうこうという話とどうつながるの?
0846nobodyさん2012/12/30(日) 18:31:38.50ID:???
>>845
>>827みたいな環境だと、未定義のconstにぶつかるよ。誰だって経験してる。
0847nobodyさん2012/12/30(日) 18:36:10.20ID:???
>>836
1日1万回リロードされる訳か
5秒に1回とすると15時間くらいかかるな
0848nobodyさん2012/12/30(日) 18:40:53.15ID:???
>>815
さくらに思い入れがあるのは分かったが、
真っ白になるかどうかは設定と作り次第だってば
エラー表示オフにしてたら、syntaxエラーが画面に表示されるわけないだろ
共用サーバしか使ったことないのか?
0849nobodyさん2012/12/30(日) 19:54:47.24ID:???
なんか今日は痛いやつがいっぱいいますね
0850nobodyさん2012/12/30(日) 20:29:27.45ID:???
オレのPC画面はよく真っ青になる
0851nobodyさん2012/12/30(日) 22:00:03.97ID:0Jhm5lX3
>>846
どのような要件が重なった時に未定義のconstにぶつかるのですか?
煽りじゃなく、純粋に知りたいので良ければ教えて下さい。
0852nobodyさん2012/12/31(月) 00:01:07.17ID:???
>>849
なんてったってPHP厨も冬休みだからな
基本的にPHP厨には屑しかいないが、冬休みで暇になったから加速してるんだろう
0853nobodyさん2012/12/31(月) 00:06:58.10ID:???
>>827
デバッグをデバックと書いちゃうゴミはさっさと消えろ
0854nobodyさん2012/12/31(月) 00:08:15.93ID:???
>>815
何の根拠もなく1桁パーセントですってよ
0855nobodyさん2012/12/31(月) 00:10:06.83ID:???
そうだな1桁%とか笑っちゃうな
1/1000%ぐらいなのにな
0856nobodyさん2012/12/31(月) 00:14:31.52ID:???
確率を主張したいなら、大々的に実験して母集団を統計学的に推定するくらいしろ
0857nobodyさん2012/12/31(月) 00:17:09.12ID:???
display_errorsはデフォルトではオンになってるけど本番ではオフにしろって書いてるし
ほとんどのレン鯖でエラーが見えるように
デフォルトの設定を当たり前のように利用してるレン鯖は多いけどそれは厳密にはよくないこと
つまりさくらは正しいことをしているってことだな
0858nobodyさん2012/12/31(月) 00:18:19.68ID:???
サクラはmagic_quote_gpcが確かオンだったけどなwww
0859nobodyさん2012/12/31(月) 02:33:55.45ID:???
まだ5.3なの?
0860nobodyさん2012/12/31(月) 10:15:18.23ID:???
AというサーバーでPOSTリクエストをHTTPヘッダに入れて送信するものを作って、実行すると
Bサーバーのフォームに書き込むって処理をやりたいんですが
HTTP/1.1 404 Not Found となって正常に通信できません。

POSTリクエストファイルをBサーバーにあげると正常に動くんですが
サーバーが違うとできないんでしょうか?どっちもxreaです
0861nobodyさん2012/12/31(月) 10:18:12.40ID:WNJWSLTr
↑おねしゃすです
08628512012/12/31(月) 15:14:45.18ID:UZPpiA5D
>>846
お待ちしております。
0863nobodyさん2012/12/31(月) 16:14:05.15ID:???
>>860
ソースと実行しているリクエストをうp
0864nobodyさん2012/12/31(月) 19:05:15.12ID:WNJWSLTr
ソースはこんな感じです

$fp = fsockopen('127.0.0.1', 80);
$data = http_build_query(array('何が' =&gt; '何です', 'key' =&gt; 'value'), '', '&amp;');
$request = array(
'POST /test/bbs.php HTTP/1.1',
'Host: www.example.com',
'Content-type: application/x-www-form-urlencoded',
'Content-length: ' . strlen($data) . '',
);
fwrite($fp, implode($request, "\r\n") . "\r\n\r\n" . $data);
0865nobodyさん2012/12/31(月) 19:21:57.73ID:???
とりあえずcURLでやれ
0866nobodyさん2012/12/31(月) 19:26:12.25ID:???
>>864
allow_url_fopenが無効になってるとか?
0867nobodyさん2012/12/31(月) 21:21:43.17ID:???
ログ見れば
0868nobodyさん2012/12/31(月) 22:48:41.19ID:WNJWSLTr
>>866
ONみたいです。log
HTTP/1.1 404 Not Found
Date: Mon, 31 Dec 2012 13:47:46 GMT
Server: Apache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1

ってなります。
0869nobodyさん2012/12/31(月) 22:50:38.14ID:???
レスポンスじゃろそりゃ
0870nobodyさん2012/12/31(月) 23:05:02.37ID:WNJWSLTr
ログとはどうやってみたらいいんですか?
0871nobodyさん2012/12/31(月) 23:57:06.25ID:???
レスポンスよりリクエスト見ろ
0872nobodyさん2013/01/01(火) 10:14:58.22ID:jqUxa8v5
リクエストは↑に書いたんですが
0873nobodyさん2013/01/01(火) 10:26:56.40ID:???
>>872
レスポンスで404が帰ってるんだから、本当に404なんだろう。
httpdが受け取ってるリクエストが予定通りなのかどうかを
確認した方が早いんじゃないの?
0874nobodyさん2013/01/01(火) 11:23:29.23ID:???
PHP厨の存在自体がくだらない
0875nobodyさん2013/01/01(火) 11:58:45.84ID:???
そりゃすいません
0876nobodyさん2013/01/01(火) 12:28:36.84ID:jqUxa8v5
>>873
予定通りなのかどうかの確認がわかりません。
ttp://dl10.getuploader.com/g/1%7Csample/7341/sample_7341.gif
これではないですよね?
0877nobodyさん2013/01/01(火) 13:31:35.80ID:???
>>876
リクエスト出してるのが自分の書いたスクリプトなんだろ?
その時にリクエスト内容いったんファイルに書き出してチェックするとかしたら
0878nobodyさん2013/01/01(火) 13:52:24.52ID:???
ところで、
$fp = fsockopen('127.0.0.1', 80);
これは?
0879nobodyさん2013/01/01(火) 14:35:18.12ID:???
Bサーバーだと動くとか書いてるから、コード見てなかったw
一つ目のパラメータにarray()とかしないで、
外で作って変数に入れとけ。
その方がミスを見つけやすい。
0880nobodyさん2013/01/01(火) 16:21:20.47ID:???
>>876
200じゃん
キチガイ乙
0881nobodyさん2013/01/01(火) 16:47:37.71ID:???
正常に動いた例だろ?
0882nobodyさん2013/01/01(火) 16:58:58.70ID:???
正常に動くんなら解決だろ
キチガイ乙
0883nobodyさん2013/01/01(火) 17:00:46.16ID:???
画面を見た感じ、
端末→A→B
の端末部分の表示に見えるが。
だとしたら意味無いけどw

でももう>>878で解決だと思うのだが。
本人まだ来てないが。
0884nobodyさん2013/01/01(火) 17:22:57.28ID:jqUxa8v5
キチガイ登場です
>>878で解決しました。ありがとうございます&サーセンw
あとデータ送れてなくても200にはなってたので一応報告しときます
0885nobodyさん2013/01/01(火) 17:23:37.78ID:???
リクエストの1行目を見せろ&見ろゴミ
0886nobodyさん2013/01/01(火) 18:01:30.97ID:???
>>878で解決ってどういうこと?
0887nobodyさん2013/01/01(火) 18:52:41.37ID:???
>>886
127.0.0.1はどこだ?
0888nobodyさん2013/01/01(火) 20:47:08.89ID:4XuGAmb/
質問です。

PHPはオブジェクト指向言語の代表格なのでPHPを先に学習すると
JavaとかC#とか超簡単に覚えられるし、これからはPHPの高い信頼性を
生かして他の言語で作られたシステム、特に銀行系のシステムが
PHPに置き換えられていくと会社の先輩から聞きました。
そこでオススメの参考書を教えて下さい。
0889nobodyさん2013/01/01(火) 20:51:07.05ID:???
会社の先輩に聞いて下さい。



おっと、無職でしたっけ、失敬。
0890nobodyさん2013/01/01(火) 20:54:19.05ID:???
過去スレで既出
0891nobodyさん2013/01/02(水) 01:24:13.55ID:???
>>887
ローカル環境で送信側と受信側のスクリプト用意して動確してるんだと思ってた
0892nobodyさん2013/01/02(水) 05:13:50.35ID:qU6EREs2
memcahedで困っています。

キャッシュが無い場合は以下を実行して複数レコードのクエリ結果を保存しているのですが、
while($row = mysql_fetch_array($my_Row)){
$menu1_0_title = $row["book_title"];
$menu1_0_no = $row["book_no"];
$menu1_0_chosha = $row["book_chosha"];
if(empty($menu1_0_chosha){
$menu1_0_chosha = "不明";
}
echo "<li><a href=\"./".$menu1_0_no.".html\">".$menu1_0_chosha." - ".$menu1_0_title."▼</a></li>\n";
}
$row = serialize($row);
$memcached->set("bookcache", $row, MEMCACHE_COMPRESSED, time() + 300);
}else{
$row = unserialize($row);
キャッシュが存在する場合、この後の処理はどのように書けば良いのでしょうか?
while(){}の中身がうまく書けずに困っています。
0893nobodyさん2013/01/02(水) 06:39:18.31ID:???
if(キャッシュがある){
 キャッシュから取得して変数に格納
} else {
 DBから取得して変数に格納
}
変数を使用する
0894nobodyさん2013/01/02(水) 06:43:03.45ID:???
まず memcached->get して、 FALSE が帰ってきた時に set すればいいんじゃね?
0895nobodyさん2013/01/02(水) 07:05:16.50ID:qU6EREs2
こんなに早くお返事がいただけるとは思っていませんでした。
ありがとうございます。

>>893
まさにその「キャッシュから取得して変数に格納」の記述方法がわからず苦悩しています。

while(『ココ』){
$menu1_0_title = $row["book_title"];
$menu1_0_no = $row["book_no"];
$menu1_0_chosha = $row["book_chosha"];
if(empty($menu1_0_chosha){
$menu1_0_chosha = "不明";
}
echo "<li><a href=\"./".$menu1_0_no.".html\">".$menu1_0_chosha." - ".$menu1_0_title."▼</a></li>\n";
}

複数レコードなのでシリアライズを使ってみたのですが、
これは問題ないでしょうか?

>>894
長くなりすぎると思ったのでその部分を省略していました。
実際はmemcached->getも上の方で実行しています。
誤解を招く表現で申し訳ありません。
0896nobodyさん2013/01/02(水) 14:33:01.00ID:???
>>895
よく分からん。『ココ』はDBから取得している処理では?
0897nobodyさん2013/01/02(水) 21:20:30.84ID:BJXyvJDc
>>896
説明が下手で申し訳ありません。

mysqlからクエリ結果を取得する時には
『mysql_fetch_array』を使うというのはわかるのですが、

キャッシュに保存されたクエリ結果の取得なので
どんな関数を使えばいいのかわかりません。

『mysql_fetch_array』を使って以下のようにしても良いのでしょうか?

while($row =mysql_fetch_array($row)){
$menu1_0_title = $row["book_title"];
(省略)
}
echo "<li><a href=\"./".$menu1_0_no.".html\">".$menu1_0_chosha." - ".$menu1_0_title."▼</a></li>\n";
}
0898nobodyさん2013/01/02(水) 21:27:42.20ID:???
ああ、そういうことか
配列の状態でキャッシュに入れておいて、foreach文かfor文でループさせれば同じことができるよ。
例えば以下のような感じ

foreach($rows as $row) {
〜〜
0899nobodyさん2013/01/03(木) 00:06:28.30ID:g593pwmY
>>898
ありがとうございます。
foreachを使い、
>>893 で教えていただいたように順番を変更しました。
serializeを使うとキャッシュがある時に表示しなくなるので外してみました。
キャッシュ有りでもキャッシュを読んでくれないのですが、
何がまずいのでしょうか?
0900nobodyさん2013/01/03(木) 00:07:54.37ID:g593pwmY
$memcached = new Memcache;
$memcached->connect("localhost", 11211);
if (($row = $memcached->get("bookcache")) !== false) {
//$row = unserialize($row);
foreach($row as $row2){
$menu1_0_title = $row2["book_title"];
$menu1_0_no = $row2["book_no"];
$menu1_0_chosha = $row2["book_chosha"];
if(empty($menu1_0_chosha)){
$menu1_0_chosha = "不明";
}
echo "<li><a href=\"./".$menu1_0_no.".html\">".$menu1_0_chosha." - ".$menu1_0_title."●</a></li>\n";
}
}else{
$my_Row = mysql_query("SELECT book_id,book_no,book_title,book_chosha FROM book_table ORDER BY book_id DESC LIMIT 0,50",$my_Con);
while($row = mysql_fetch_array($my_Row)){
$menu1_0_title = $row["book_title"];
$menu1_0_no = $row["book_no"];
$menu1_0_chosha = $row["book_chosha"];
if(empty($menu1_0_chosha)){
$menu1_0_chosha = "不明";
}
echo "<li><a href=\"./".$menu1_0_no.".html\">".$menu1_0_chosha." - ".$menu1_0_title."▲</a></li>\n";
}
//$row = serialize($row);
$memcached->set("bookcache", $row, MEMCACHE_COMPRESSED, time() + 600);
}
0901nobodyさん2013/01/03(木) 22:44:43.30ID:???
>>900
具体的に何をキャッシュしたいの?
0902nobodyさん2013/01/03(木) 23:13:48.39ID:g593pwmY
>>901
DBのクエリ結果をキャッシュに保存したいんです。
0903nobodyさん2013/01/03(木) 23:32:49.29ID:???
>>902
1レコード?
複数レコード?
型は?
キャッシュできるのはどういうデータ型?
レス数が900を超えています。1000を超えると表示できなくなるよ。