【PHP】下らねぇ質問はID出して書き込みやがれ 128
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/05/26(日) 23:01:58.78ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 127
http://kohada.2ch.net/test/read.cgi/php/1363698829/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0448nobodyさん
2013/06/29(土) 23:57:16.42ID:???0449nobodyさん
2013/06/30(日) 04:50:55.38ID:???0450nobodyさん
2013/06/30(日) 06:47:48.41ID:???下記のような内容のcsvをphpで配列としたいと考えております。
================================
商品名,内容,色,価格
"鉛筆","字を書く","赤,青",100
================================
そこで、$○○=explode(',',$○○)といった関数を使用したのですが、
ダブルクォーテーションでの囲みが無視され、
色の部分が青と赤の2つに別れてしまいました。
$○○[0]="鉛筆"、$○○[1]="字を書く"、$○○[2]="赤、$○○[3]=青"、$○○[4]=100
上記のデータを
$○○[0]=鉛筆、$○○[1]=字を書く、$○○[2]=赤,青、$○○[3]=100
とするにはどのようにすれば良いかどなたかご教示いただけませんか?
よろしくお願いします。
0454nobodyさん
2013/06/30(日) 19:21:22.30ID:???0455nobodyさん
2013/06/30(日) 19:36:22.61ID:???0458nobodyさん
2013/07/01(月) NY:AN:NY.ANID:Kji7A4hlstream_set_write_bufferの書込みバッファは効果ない。
file_put_contents( *, *, FILE_APPEND ) はfwriteより20倍は遅かった。
0459nobodyさん
2013/07/01(月) NY:AN:NY.ANID:???0460nobodyさん
2013/07/02(火) NY:AN:NY.ANID:rRFX7w31"bigArr": [
{
"params": {
"p1": true
},
"title": "ttl1"
},
{
"params": {
"p1": false,
"p2": true,
"smallArr": [
"sml"
]
},
"title": "ttl2"
}
],
"id": "id"
}
以上のような文字列をdecode_jsonでデコードしたいのですが、resultがnullになってしまいます
(改行は含みません)
多次元の連想配列としてデコードする方法を教えてください
よろしくお願いします
0462nobodyさん
2013/07/02(火) NY:AN:NY.ANID:rRFX7w31json_decodeの間違いでした。すみません
よろしくお願いします
0464nobodyさん
2013/07/02(火) NY:AN:NY.ANID:Q5mgJSDQ【PHPのバージョン】6.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
メモリーの消費について質問なんですが
sessionなどで
$_SESSION['username'] = "hogehgoe";
と入れた場合一人あたり単純に8byteのメモリー消費となってこれが1万人になると8byte * 10,000 = 80kbyteのメモリーが消費されるという認識で良いのでしょうか?
0466nobodyさん
2013/07/02(火) NY:AN:NY.ANID:Q5mgJSDQ打ち間違えました。
PHPは5.3です
0467nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???0471460
2013/07/03(水) NY:AN:NY.ANID:/WzHO7Hb$params1 = new stdClass();
$params1->p1 = true;
$title1 = new stdClass();
$title1 = "ttl1";
$params2 = new stdClass();
$params2->p1 = false;
$params2->p2 = true;
$title2 = new stdClass();
$title2->title = "ttl2";
$params2->smallArr = array();
$params2->smallArr[0] = "sml";
$noname1 = new stdClass();
$noname1->params = $params1;
$noname1->title = $title1;
$noname2 = new stdClass();
$noname2->params = $params2;
$noname2->title = $title2;
$bigArr= array();
$bigArr[0] = $noname1;
$bigArr[1] = $noname2;
$obj = new stdClass();
$obj->bigArr = $bigArr;
$obj->id = "id";
$json = json_encode($obj);
この$jsonは>>460で例として挙げた文字列と同じものになりますが、
そこで
$obj = json_decode($json);
としても原因不明のエラーが出てしまいます。phpのバージョンは5.4.8です。
どなたか解決策を教えてください。よろしくお願いします。
0473nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???http://codepad.org/XyHfgOLm
0476nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???お前日本人か?
0477460
2013/07/03(水) NY:AN:NY.ANID:/WzHO7Hb文字コードを調べてもutf-8です
json_decodeの後にjson_last_errorを実行してみたら結果は0でした
>>473
ありがとうございます
codepadだと実行するんですね…ということは普通ならデコードできる文字列だということですね
さっぱりわからなくなりました
0478460
2013/07/03(水) NY:AN:NY.ANID:/WzHO7Hbhttp://www.softel.co.jp/blogs/tech/archives/3663
の方法も試してみましたがこちらもうまくいきませんでした
0480nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???> としても原因不明のエラーが出てしまいます。phpのバージョンは5.4.8です。
エラーの内容を貼れ。
0481460
2013/07/03(水) NY:AN:NY.ANID:/WzHO7Hbありがとうございます。エラーコードは500です
0482nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???0483nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???0485460
2013/07/03(水) NY:AN:NY.ANID:/WzHO7Hb死ぬことにします。ありがとうございました
0486nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???0487nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???0488nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???0489nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???0490nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???0491nobodyさん
2013/07/03(水) NY:AN:NY.ANID:???0492nobodyさん
2013/07/04(木) NY:AN:NY.ANID:???http://www.youtube.com/watch?v=z2qK2lhk9O0s
みんなで選ぶニコ生重大事件 2012
http://vote1.fc2.com/browse/16615334/2/
2012年 ニコ生MVP
http://blog.with2.net/vote/?m=va&id=103374&bm=
2012年ニコ生事件簿ベスト10
http://niconama.doorblog.jp/archives/21097592.html
生放送の配信者がFME切り忘れプライベートを晒す羽目に 放送後に取った行動とは?
http://getnews.jp/archives/227112
FME切り忘れた生主が放送終了後、驚愕の行動
http://niconama.doorblog.jp/archives/9369466.html
台湾誌
http://www.ettoday.net/news/20120625/64810.htm
0493nobodyさん
2013/07/04(木) NY:AN:NY.ANID:???0494nobodyさん
2013/07/05(金) NY:AN:NY.ANID:R8MDMfej0495nobodyさん
2013/07/05(金) NY:AN:NY.ANID:a6le42l8現在、PHPで会員制の簡易対戦ゲームを作成中です。
その「対戦開始までの基本的な流れ」は、どう設計したら良いでしょうか?
チャットシステムを応用して、一応、対戦を実現できているのですが、
独学のため設計に不安があります。アドバイスお願いします。
(自分が作った対戦開始までの流れ)
1. 会員Xから会員Yに対戦を申込 (POSTにて「申込フラグ」をDBに登録)
2. 会員Yが「申込フラグ」を取得 (Ajaxで定期的にDBから取得)
3. 会員Yが対戦を承諾 (POSTにて「承諾フラグ」をDBに登録)
4. 会員Yが対戦を開始
5. 会員Xが「承諾フラグ」を取得 (Ajaxで定期的にDBから取得)
6. 会員Xが対戦を開始
なお、ゲームの内容は、一定時間内で同一クイズに対する総得点を競うものです。
よろしくお願いします。
0496nobodyさん
2013/07/05(金) NY:AN:NY.ANID:???基本的にはいいと思うけど、人が増えたときのサーバー負荷が高くなりそう。
もしアパッチでやってるなら
アパッチよりもnodejs等でリアルタイムWEBな方式を検討してみてる価値はあると思う。
0497495
2013/07/05(金) NY:AN:NY.ANID:a6le42l8アドバイスありがとうございます。
AjaxやCometよりも、リアルタイムWEBとしては、node.jsを利用した
WebSocketに優位性があるようですね。勉強してみます。
なお、実際、以下のようなジレンマが悩ましいです。
Ajax、Cometについての言及。
http://www.atmarkit.co.jp/ait/articles/1010/05/news133_2.html
「1リクエスト/レスポンスヘッダー自体は数KBと、そう大きくありませんが、
リクエストの更新頻度が密になってくると、毎回のリクエスト量は馬鹿になりません。
更新頻度を遅くすると、欲しい情報がすぐに手に入らないし、更新頻度を上げると
サーバへのリソース要求が高くなる、というジレンマを抱えることになります。」
0498nobodyさん
2013/07/05(金) NY:AN:NY.ANID:???0499nobodyさん
2013/07/05(金) NY:AN:NY.ANID:???Ajax、Cometについてはそういった問題があるけど、WebSocketにはないんだろ?
じゃあWebSocketでいいじゃん
0500nobodyさん
2013/07/05(金) NY:AN:NY.ANID:???0501495
2013/07/05(金) NY:AN:NY.ANID:wXQJTLAZレスありがとうございます。
WebSocketについては今日知ったばかりなので、検討中です。
学習コストが高そうなのと、ブラウザの一部が未対応との情報が気になります。
なお、質問の主旨は、>>495のとおり「対戦開始までの基本的な流れ」は、
どう設計したら良いかです。 PHP側での注意点など、ご指摘してくださると
有り難いです。
0502nobodyさん
2013/07/05(金) NY:AN:NY.ANID:???何を心配しているのか具体的に書いてくれないと具体的に答えようがない
データの矛盾?パフォーマンス?不正操作の穴?ユーザビリティ?
0503nobodyさん
2013/07/05(金) NY:AN:NY.ANID:HeBuTBQC0504495
2013/07/05(金) NY:AN:NY.ANID:wXQJTLAZ対戦ゲームの設計についてです。
対戦システムを作りたい。
例えば、オンライン将棋やオセロなどは、どのように対戦成立を実現しているのだろう。
チャットシステムを応用すればよいのかな?
とりあえず、>>495の設計の流れで出来た。でも、これで本当にいいの?
こういった疑問です。
PHPで作る対戦システムの設計やロジックを知りたいです。
0505nobodyさん
2013/07/05(金) NY:AN:NY.ANID:???http://wise9.jp/archives/3930
ロブロブラボ - ROBROB LAB
http://rob2.jp/mmodev/net.html
MMORPG製作に使えそうな通信ライブラリ
RakNet ttp://www.rakkarsoft.com/
UDPベースのオブジェクト同期系ネットワークライブラリ
HawkNL http://www.hawksoft.com/hawknl/
LGPL、Windows、各種Un*x、MacOS 7〜9/X対応のネットワークライブラリ
オブジェクト同期までは持ってないが、ネットワーク越しのSignal、Mutexぐらいは持ってる。
Nevrax.org -- NeL
大規模なオンライン世界を開発するためのツールキット
http://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2FMMORPG#y28807ac
0507nobodyさん
2013/07/05(金) NY:AN:NY.ANID:???UDP:速いけれどデータが届くとは限らない
TCP:遅いけれど確実にデータが届く
アクションMMORPGでは通信速度が重要です。しかし、データの正確性もある程度は必要です。
http://gamemake.wiki.fc2.com/wiki/14.5%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E4%BB%95%E6%A7%98
ネットワークプログラミングの基礎知識
http://x68000.q-e-d.net/~68user/net/
WinSockプログラミング序章
「ネットワークゲームを作りたい!」
今までにそう思ったことはありませんか?
http://www.geocities.jp/playtown1056/program/zyoshou.htm
Linuxネットワークプログラミング
http://www.geekpage.jp/programming/linux-network/
0509nobodyさん
2013/07/06(土) NY:AN:NY.ANID:???ではこれから遠慮なくRubyの布教をさせてもらう
0510nobodyさん
2013/07/06(土) NY:AN:NY.ANID:CYENJL3T速度さえでるならサーバーはPHPで設計していい。
しかしユーザー側はPHPが動作する環境にないから、
JavaとかJavascriptとかflashとかC++とかC#とか別に作らないとダメだろ。
ブラウザでHTMLだけを表示してたらリアルタイムにならない。
0511495
2013/07/06(土) NY:AN:NY.ANID:Jrzu0zyxリアルタイム通信については、質問の主旨ではありません。
質問の主旨は、「PHPで作る対戦システムの設計」です。
特に、対戦開始成立までの流れです。ただ、付随的にAjaxを利用しています。
ですから、PHPに関連する範囲でアドバイスをお願いしています。
0512nobodyさん
2013/07/06(土) NY:AN:NY.ANID:???0513nobodyさん
2013/07/06(土) NY:AN:NY.ANID:???0514nobodyさん
2013/07/06(土) NY:AN:NY.ANID:???ネットワーク機能もあるがサーバーが外部とのやりとりするためでユーザー側を操れるわけでない。
ユーザー側の通信を制御するのはPHP以外の技術。
0515495
2013/07/06(土) NY:AN:NY.ANID:cPOigFzJ悪いなら、どこが悪くて、どう直せばよいのか、
良いなら、他に改良点があるかです。
0517nobodyさん
2013/07/06(土) NY:AN:NY.ANID:???http://www.moongift.jp/2013/02/20130226/
「PeerJS」でP2Pチャットを作ってみる http://tech.aainc.co.jp/archives/4798
WebSocketを使っていない、サーバ無用なリアルタイム通信ライブラリ「Easy WebSocket」
http://www.moongift.jp/2011/03/20110316-2/
Node.jsでWebSocketサーバを作ってみる。 http://d.hatena.ne.jp/sho322/20130610/1370844721
Node.jsとWebSocket.IOでチャットアプリを作る http://mawatari.jp/archives/make-a-chat-application-in-node-js-and-websocket-io
Tomcat、Jetty、Socket.IO/Node.js性能比較: WebSocketが一番速いアプリケーションサーバはどれだ
http://www.atmarkit.co.jp/ait/articles/1306/04/news021.html
リアルタイムWebを極める
ポーリングからCometへ
数年前まではチャットルームのようなサービスでは,一定時間ごとに新しい情報がないか調べるポーリングと呼ばれる方法が使われてきました。
しかし,ポーリングでは情報がない時にもサーバへアクセスする必要があるため,実際には10秒間隔といったように時間を空けることで,サーバの負荷を減らす手法がとられました。
その後,ロングポーリング(通称:Comet)と呼ばれる見かけ上はサーバからのプッシュ通信が行える技術を使ったチャットサービスなどが登場しました。
http://gihyo.jp/dev/serial/01/realtimeweb/0001
CometとAjaxを利用したチャットサーバの実装
http://codezine.jp/article/detail/733?p=2
リアルタイムWebを構築しやすくする「Socket.IO」とは
ポーリングを用いる手法 http://cdn.shoeisha.jp/cz/static/images/article/7075/7075_01a_s.gif
Comet http://codezine.jp/static/images/article/7075/7075_02a_s.gif
プラグインによるSocket接続 http://codezine.jp/static/images/article/7075/7075_03a.gif
WebSocket http://codezine.jp/static/images/article/7075/7075_04a.gif
http://codezine.jp/article/detail/7075
0518495
2013/07/06(土) NY:AN:NY.ANID:cPOigFzJなるべく対戦開始時間が近い方が良いですが、
数秒のズレがあっても良いと考えてます。
0520nobodyさん
2013/07/07(日) NY:AN:NY.ANID:UBLgc+apPOSTされたbase64の画像データを受け取って保存してそれを表示したいのですが、相応のサイズのファイルは作成されているのですが、うまく画像ファイルになっていないみたいで画像として開けません。
環境 CentOS6.4
パッケージ一覧
php.x86_64 5.3.3-22.el6
php-cli.x86_64 5.3.3-22.el6
php-common.x86_64 5.3.3-22.el6
php-gd.x86_64 5.3.3-22.el6
php-mbstring.x86_64 5.3.3-22.el6
php-mcrypt.x86_64 5.3.3-1.el6
php-mysql.x86_64 5.3.3-22.el6
php-pdo.x86_64 5.3.3-22.el6
php-pear.noarch 1:1.9.4-4.el6
php-tidy.x86_64 5.3.3-22.el6
php-xml.x86_64 5.3.3-22.el6
php-xmlrpc.x86_64 5.3.3-22.el6
http://pontago.hatenablog.com/entry/20091028/1256743421
http://ameblo.jp/mingw/entry-10359267538.html
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1133306221
を参考にしてつくったのが下記のコードです
0521nobodyさん
2013/07/07(日) NY:AN:NY.ANID:UBLgc+ap続きです
function is_img($img_path){
if (!(file_exists($img_path) and $type=exif_imagetype($img_path))) return false;
if (IMAGETYPE_GIF == $type) return 'gif';
else if (IMAGETYPE_JPEG == $type) return 'jpg';
else if (IMAGETYPE_PNG == $type) return 'png';
return false;
}
0522nobodyさん
2013/07/07(日) NY:AN:NY.ANID:UBLgc+ap続きです
$data = $_POST['files'];
$www_dir = "/img/upload_images/";
$file_path = $_SERVER['DOCUMENT_ROOT'] . $www_dir;
$file_name = "test";
if (touch($file_path . $file_name)) {
$fp = fopen($file_path . $file_name, 'w');
$data = base64_decode(str_replace(' ', '+', $data));
fwrite($fp, $data);
fclose($fp);
} else {
echo 'No Writeing';
}
if ($ext = is_img($file_path . $file_name)) {
if (rename($file_path . $file_name , $file_path . $file_name . ".org.$ext")) {
echo "not rename exit";
exit(0);
}
} else {
// ここが実行される!!
echo 'image only';
exit(0);
}
echo $file_path . $file_name . ".$ext";
0523nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0524nobodyさん
2013/07/07(日) NY:AN:NY.ANID:UBLgc+ap>>523
ファイルの内容が違うのはあきらかなんですがバイナリファイルをみてもそれがなんなのか、違う原因の突き止めかたが全然わからないので…。
参考の為に…
元画像:http://kobe.digi2.jp/test/test.png
エンコード→デコードしたやつ:http://kobe.digi2.jp/test/new_test.png
0525nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???それと、エンコードデコードしたやつじゃなくて、POSTされたファイルそのものが
検証には必要なんじゃないかと思うけど。
0526nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0527>>520-522です
2013/07/07(日) NY:AN:NY.ANID:UBLgc+ap>画像見れないし。
画像として見れないから困ってるんです。名前をつけて保存して見てください。
>あ、元画像じゃなくて、サーバに保存されたファイルをPOSTされたファイルって言ってるからね。
http://kobe.digi2.jp/test/new_test.png がサーバーに保存されたファイルです。
ちなみにPOSTしてデコードする前のデータをimgタグのsrcに設定するとちゃんと見れます。
http://kobe.digi2.jp/test/new_test.html
0528nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???その例のbase64食わしてみたらちゃんとデコードされたぞ
デコードするまえのbase64 のデータのまま保存したらどうなってる?
0529>>520-522です
2013/07/07(日) NY:AN:NY.ANID:UBLgc+ap>デコードするまえのbase64 のデータのまま保存したらどうなってる?
エンコード状態で保存しても画像としては見れないままです・・。
新たな発見がありました
下記のコードを実行すると
--------------------------------------------
$data = $_POST['files'];
$data = str_replace(' ', '+', $data);
echo '<img src="' .$data.'">'; // ←ちゃんと表示される
$decode_data = base64_decode($data);
$encode_data = base64_encode($decode_data);
if ($decode_data === $encode_data) {
echo '一致';
} else {
echo 'なぜか不一致';
}
--------------------------------------------
「なぜか不一致」が出力されてしまいました・・・orz
こんなことってあるんですか・・・?
0531nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0532nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???>data:image/png;base64,
この文字まで食わせてるだろう、それが原因だよ。
0533>>520-522です
2013/07/07(日) NY:AN:NY.ANID:UBLgc+apこれです
保存されたのをテキストエディタで開いて閲覧したときの値です
http://kobe.digi2.jp/test/test.html
0534nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???base64_decode するときは base64,の次の iVBO〜から渡さないとダメだよ
0535nobodyさん
2013/07/07(日) NY:AN:NY.ANID:UBLgc+apああ……そういうことですか…
お騒がせしてしまってもうしわけない
MIMEとかなんやらのファイルに関しての知識がまったくなかったもので…
0536nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0537nobodyさん
2013/07/07(日) NY:AN:NY.ANID:UBLgc+apPHPの関数の不具合かと思い込んでいたので危うくいつまで経っても解決できないところでした
ありがとうこざいました
0538nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0539nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0540nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0541nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???>>520だけど、無知だからだよ。
「php base64_decode」や「php
base64_decode ファイル保存」ググって5ページくらいリンクを紫色で塗りつぶしたけど、ファイルのヘッダ部分を削除してファイルに保存してくれるコードには出会わなかったしどうすりゃいいんだよ
0542nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???知識がないことじゃなくて、行為と判断に対して言っている
0543nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0544nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???じゃあその行動と判断の模範解答例をお願いします。多分それが解決しないと何の意味もないし、今後の参考にしたいので。
■ このスレッドは過去ログ倉庫に格納されています