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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0619nobodyさん2011/01/14(金) 15:09:17ID:x5/cEkaG
>>618
queryメソッドを使って
SELECT * FORM USER_TBLで読めました。
0620nobodyさん2011/01/14(金) 15:20:32ID:???
もしかしてフィールド名にSQLの予約語を使ってないかw
0621nobodyさん2011/01/14(金) 15:31:15ID:x5/cEkaG
>>620
http://dev.mysql.com/doc/refman/5.1/ja/reserved-words.html

ここで確認しましたが、使っていませんでした。
0622nobodyさん2011/01/14(金) 16:22:34ID:???
$stms = $this->db->prepare($sql);
if (MDB2::isStatement($stms)) {
echo "実行ok";
}
else if (MDB2::isError($stms)) {
echo "error";var_dump($stms->getMessage());exit;
}
else {
echo "その他";
exit;
}
echo "テスト出力B";
0623nobodyさん2011/01/14(金) 16:31:27ID:x5/cEkaG
>>622
やってみました。
しかし、prepareをやっている行から下にある
echoはどれも表示されません。

prepare行の所でプログラムが強制終了しているのでしょうか?
0624nobodyさん2011/01/14(金) 17:00:22ID:???
だから$stmsオブジェクトがないんだって。
それはクエリーに問題があるからで、しかも失敗している部分はテーブルから先にある。

もしかして・・・こんなオチ?

SELECT * FROM USER_TBL WHERE USER_NO = '?'
0625nobodyさん2011/01/14(金) 17:13:22ID:x5/cEkaG
>>624
$stmsにオブジェクトがない事によって
それ以降のecho等も実行されないわけですか?

?に''をつけてみましたが同じ結果でした。

別のサイトで、PEAR::MDB2ではなくPEAR::DBを使っていたので
それを流用し、DBを使って同じようにprepareからexecuteを実行すると目的の結果が得られました。

>>605さんがおっしゃられているように、PEARが壊れている等でしょうか?
0626nobodyさん2011/01/14(金) 17:37:36ID:???
prepare呼び出し中に落ちる。エラーメッセージもエラーログもなし。(ほんとか?)
ならPEAR::MDB2のソースを追ってみればいい。

PEARが壊れている。XREA固有の何かがある。
等の環境問題なら自宅に別の環境を作ってみればいい。
0627nobodyさん2011/01/14(金) 17:41:37ID:???
>>623
ならprepareが失敗してるから>>605の言う壊れてる可能性もある
SQLを
SELECT * FROM USER_TBL WHERE USER_NO=?

SELECT * FROM USER_TBL WHERE USER_NO=:testdata
でやってみて

>>624
$stmtがオブジェクトじゃなくても>>622のコードは実行できる
但しprepareが正常に動作していたらな
0628nobodyさん2011/01/14(金) 17:50:22ID:???
あーついでにこっちも・・・

$sql = "SELECT * FROM USER_TBL WHERE USER_NO = ?";
$stms = $this->db->prepare($sql,array('integer'));
if (MDB2::isStatement($stms)) {
echo "実行ok";
}
else if (MDB2::isError($stms)) {
echo "error";var_dump($stms->getMessage());exit;
}
else {
echo "その他";
exit;
}
echo "テスト出力B";
0629nobodyさん2011/01/14(金) 17:53:13ID:N58y3KzQ
php + MySQL で

MySQLで取得したテーブルデータを格納した複数の配列の中の【一部の要素】でソートをしたいのですが、どうすればよいでしょうか?
なお各配列ごとに【一部の要素】の名前が違うので、どうしたものか困り果てております。

array ("data1",
 array (a = aaa, b = bbb, c = 1)
 array (a = aaa, b = bbb, c = 2)
 array (a = aaa, b = bbb, c = 3)
)
array ("data2",
 array (a = aaa, b = bbb, d = 4)
 array (a = aaa, b = bbb, d = 5)
 array (a = aaa, b = bbb, d = 6)
)

というような配列群が合って、その data1 の c と data2 の d を降順にソートして
最後に下のようにそのdata1とdata2を結合したdata3を作り出したいです。

array ("data3",
 array (a = aaa, b = bbb, c = 1)
 array (a = aaa, b = bbb, c = 2)
 array (a = aaa, b = bbb, c = 3)
 array (a = aaa, b = bbb, d = 4)
 array (a = aaa, b = bbb, d = 5)
 array (a = aaa, b = bbb, d = 6)
)

あまり基礎を分かっておりませんので、こんなこと自体ができるかどうかが不明ですが、よろしくお願いします。
0630nobodyさん2011/01/14(金) 17:53:59ID:???
prepareからリターンする前に落ちるって何度言えば分かるの?
0631nobodyさん2011/01/14(金) 17:58:27ID:???
よーし、こうなったら大穴当てちゃうぞ!

?がab'cdef

こうだろw
0632nobodyさん2011/01/14(金) 18:01:33ID:x5/cEkaG
>>627
>>628
3つのパターンを試しましたが全て結果は変わらずでした。

ただ、>>608さんのphp.iniの設定を間違っていました。
データベース接続成功とテスト出力Aの後に以下のエラーが出ています。


PHP Strict Standards: Non-static method MDB2::classExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1854
Strict Standards: Non-static method MDB2::classExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1854
PHP Strict Standards: Non-static method MDB2::fileExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1854
Strict Standards: Non-static method MDB2::fileExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1854
PHP Strict Standards: Non-static method MDB2::loadClass() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1861
Strict Standards: Non-static method MDB2::loadClass() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1861
PHP Strict Standards: Non-static method MDB2::classExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 327
Strict Standards: Non-static method MDB2::classExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 327
0633nobodyさん2011/01/14(金) 18:03:53ID:???
>>623
XREAでググるとMySQLのドライバを入れなくちゃならんという記述を見かけるが
その辺は大丈夫?
0634nobodyさん2011/01/14(金) 18:08:08ID:???
>>629
そのようになるようなクエリを書けば良いんじゃないの?
そのままやりたいならとりあえずarray_mergeでマージしてから
usortでC,Dの値を見る形で良いと思うが
0635nobodyさん2011/01/14(金) 18:09:17ID:z4LQsmVn
これはどちらの方が高速に動作しますか


$stmt->bindParam(':foo', $foo);
$stmt->bindParam(':bar', $bar);
foreach($arr as $value){
list($foo, $bar) = $value;
$stmt->execute();
$stmt->closeCursor();
}

///////////////////////////////////////

foreach($arr as $value){
$stmt->bindValue(':foo', $value['foo']);
$stmt->bindValue(':bar', $value['bar']);
$stmt->execute();
$stmt->closeCursor();
}
0636nobodyさん2011/01/14(金) 18:10:15ID:x5/cEkaG
>>633
自分で入れてはないのですが
get_included_files()で確認したら

/usr/local/lib/php/MDB2/Driver/mysql.php

を読み込んでいるようですし
queryメソッドでは結果を取得できるので
大丈夫だという認識でした。
0637nobodyさん2011/01/14(金) 18:15:30ID:N58y3KzQ
>>634
どのようにクエリを書けばいいか分からなかったので、いっそPHP側でできないものかと思いまして。
ちょっとその方法でやってみます。ありがとうございます。
0638nobodyさん2011/01/14(金) 18:20:14ID:???
>>632
これはどう?
$stms = $this->db->loadModule('Extended')->prepare($sql);
0639nobodyさん2011/01/14(金) 18:28:15ID:x5/cEkaG
>>638
Fatal error: Call to undefined method MDB2_Extended::prepare()

というエラーが出ます。
0640nobodyさん2011/01/14(金) 19:12:37ID:???
>>693
これは?
$stms = $this->db->prepare($sql, NULL, MDB2_PREPARE_RESULT);
0641nobodyさん2011/01/14(金) 19:23:25ID:x5/cEkaG
>>693
ありがとうございます。

693さんからレスを頂く前に動きました。

原因としては、XREAサーバーには既にMDB2がインストールされていたらしく
それを確認せずに自分でMDB2のパッケージをDLし、インストールしていました。

ソース上は自分でインストールした方を読み込んでいたらしく
そのパッケージを削除し、はじめからインストールされていたMDB2を
読み込みように変更したら正常に動きました。

ただ、なぜprepareだけ異常なのか、queryメソッド等は動くのかはわかりません。


朝早くからたくさんの方にレスを頂きました。
本当に助かりました。ありがとうございました。
0642nobodyさん2011/01/14(金) 19:28:56ID:???
prepareとqueryとではincludeするソースが異なるからじゃない?
まぁ解決してよかったね。
0643nobodyさん2011/01/14(金) 19:34:06ID:???
解決してよかったけど
既に定義されていたらincludeできないから
その結論で完全解決ではないと思うぞ
0644nobodyさん2011/01/14(金) 19:58:01ID:???
>>641 名前: nobodyさん 投稿日: 2011/01/14(金) 19:23:25 ID:x5/cEkaG

解決して良かったです。

このスレで以前にありましたが、思いがけない仕様で皆様が開眼した事例がありました。
今回もそれに類するのだろうか? と、いろいろと自分でも試してみたりしていました。

それにしても環境に起因する事項だったんですね。

今回は、>> 643 さんが言われている、
「自分でダウンロード&インストールした方を使用した」部分の確定に課題が残りますが、
少しでも前に進める状況が得られたことは良いことです。

さて、お手数ですが残る課題として、>>643 さんが言われている部分を再整理して、
再度の質問として出してもらえませんか?

> 既に定義されているから include できない

それが覆された状況ですから、その部分を検証してみる必要があると思います。
0645nobodyさん2011/01/14(金) 20:45:04ID:x5/cEkaG
>>589です。

>>642
>>643
>>644
本当にありがとうございました。
心から感謝します。

少し状況を整理すると
XREAサーバー側にMDB2が入っていないと勝手に判断した後に
自分でダウンロードしたパッケージを解凍し、そのままサーバーへアップロードしました。

今までこの方法で、PEAR::NetUserAgentMobile等が正常に動いたので
それで問題ないと思っていたのですが

今調べて、このあたりを読むとそれだけではダメなんですかね?
http://m630.net/php-mysql/xreapearmdb2.html

正常にインストールが完了していないMDB2を無理やり読み込んでいたのが
おかしな挙動の原因でしょうか。
0646nobodyさん2011/01/14(金) 20:48:19ID:???
ぐぐったらこんなページあったけど
http://d.hatena.ne.jp/me0/20080320
0647nobodyさん2011/01/15(土) 08:03:08ID:???
>>645

なるほど
書かれているURLも見ました
とても勉強になります
解決してなによりです
0648nobodyさん2011/01/15(土) 08:03:58ID:???
>>646
これまた勉強になります
0649nobodyさん2011/01/15(土) 09:32:51ID:???
しかしPEARをインストールしてあるなら運営がそこまでは設定するべきじゃないの
0650nobodyさん2011/01/15(土) 10:30:31ID:???
勉強になるのは結構だけどどうなのかちゃんと報告してくれよ あれだけ皆の世話になったんだから
0651nobodyさん2011/01/15(土) 11:09:54ID:???
PHPとしては当然の動作をしただけでたいした問題じゃない
言葉にするなら競合しただけ
0652nobodyさん2011/01/15(土) 11:43:34ID:???
何がどう競合したの?
0653nobodyさん2011/01/15(土) 12:18:10ID:???
651じゃないが推測するに
MDB2.php は多分パス付きでincludeするだろうから、自分でインストールしたファイル
MDB2の中でクラス等をincludeするときはinclude_pathなどで読むのでxreaがインストールしたファイル
バージョンが同じならいいけど、違ってたらなんか問題が出るでしょうな。
0654■注意したりして2011/01/15(土) 12:59:36ID:???
>>649
>>650
>>652

自分が知りたいことを求める。
他者から見たら質問と受け取られる可能性がある。

そんなことを書き込むときには、IDを出して書き込もう!

それがこのスレが荒れない要素の一つだったりします。

独りよがりな文句、呟き独り言、このスレでは求めていません。
そうしたことを書き込みたいならば、こちらのスレに移動しましょう。

【PHP】下らねぇ質問はID出さずに書き込みやがれ 1
http://hibari.2ch.net/test/read.cgi/php/1289117484/l50

0655nobodyさん2011/01/15(土) 13:21:37ID:???
お前こそ隔離にいてくんねえかな
毎度毎度暇だね
0656nobodyさん2011/01/15(土) 13:33:25ID:p52QVX5I
質問です!

>>655 さん、どうしてスレを荒らすような書き込みをするんですか?
ここはあなた個人のスレではありません。

>>654 で、ちょっとだけ上から目線の書き込みがあったからといって、スレを荒らす傍若無人な振る舞いは誰からも喜ばれない行為です。

質問 1.こうして>>655のようにスレを荒らす人が現れるのは、PHPの仕様、もしくはこのスレの仕様ですか?
質問 2.仕様ならば「可哀相な人だ」と人であることを認めて無視しても、後々に問題はないですか?
質問 3.無視することで問題が発生したならば隔離して欲しいのですが、隔離は可能ですか?

( `・∀・´)ノヨロシク
0657nobodyさん2011/01/15(土) 13:47:07ID:???
>ここはあなた個人のスレではありません。
0658nobodyさん2011/01/15(土) 13:54:58ID:???
ID房の主張もわからんではないが人柄がすかんw
0659nobodyさん2011/01/15(土) 14:01:56ID:???
ああいうこと書きたかったら、だれかの回答のあとに書いてね。
質問も回答もしないんじゃあね。
0660nobodyさん2011/01/15(土) 14:19:51ID:???
ID厨=Ajax厨の特徴

改行書き込みをする
たいした回答ができない
文章力がなく見るからにバカ
自作自演で盛り上げようと必死
0661nobodyさん2011/01/15(土) 16:04:58ID:???
>>656

回答1.このスレの仕様です。
回答2.「人」として認めるか否か、無視するか否かは、あなた自身で判断ください。
回答3.誰のスレでもありませんから、あなたが隔離を願っても誰も何もしてくれません。

もう少し大人になりましょう。
0662nobodyさん2011/01/15(土) 16:56:05ID:???
大人になんかなりたくありません。
というかなる必要ないし。
Ajaxをマスターすればそれ十分かと。
0663nobodyさん2011/01/16(日) 00:09:04ID:lrogIJY/
mysqli のプリペアドステートメントを使ってSELECTした場合、
結果を連想配列で取得ってどうやるんでしょうか?もしかして不可能ですか?

PHP 5&MySQL5 です
0664nobodyさん2011/01/16(日) 00:17:53ID:???
mysqli_result::fetch_assoc -- mysqli_fetch_assoc - 結果の行を連想配列で取得する
http://www.php.net/manual/ja/mysqli-result.fetch-assoc.php
0665nobodyさん2011/01/16(日) 00:34:52ID:lrogIJY/
>>664
プリペアドステートメントを使った場合、これだとできない感じなのですが・・・
0666nobodyさん2011/01/16(日) 00:50:12ID:???
>>665
マニュアルみたけどなさそうだね
mysqli_stmt::fetchのオプションに定数でFETCH_ASSOCを入れると連想配列とか
そういう風になってんのかなと思ったけど普通にないみたいだ
ユーザノートにクラス拡張してfetch_assoc定義してる例もあるね
http://www.php.net/manual/ja/mysqli-stmt.fetch.php#72720
0667nobodyさん2011/01/16(日) 00:59:51ID:sr/IjSIi
これの具体的なやり方お願いします
オプション関数?ライブラリ?

>PHPでSWFのデコンパイルできるようになったのでデコンパイラ不要になってしまった。
>それにしても動的にASを操作できるってのは有難い。
http://twitter.com/Tsuka1427/status/22324062252
0668nobodyさん2011/01/16(日) 02:30:34ID:???
本人に聞けよ
0669nobodyさん2011/01/16(日) 03:03:25ID:???
ここで聞いたら駄目なのでしょうか
それともこれは下らない質問ではないのでしょうか
0670nobodyさん2011/01/16(日) 04:09:35ID:???
本人に聞いたら駄目なのでしょうか
それとも聞けない理由などあるのでしょうか
0671nobodyさん2011/01/16(日) 08:21:30ID:???
本人に聞かなかったら駄目なのでしょうか
聞ける理由がなければよいのでしょうか
0672nobodyさん2011/01/16(日) 11:12:29ID:???
>>663,665
ATTR_DEFAULT_FETCH_MODEで設定すればいいんでない。
06736722011/01/16(日) 11:20:00ID:???
ごめん mysqli か
>>672はPDOの話だった。
0674nobodyさん2011/01/16(日) 12:05:31ID:???
PDO使えでFA
0675nobodyさん2011/01/17(月) 04:32:26ID:ZNuukBSY
phpをアップロードした時、第三者にソースコードバレないようにするには
呼出、書込、実行の内ドレをONにするとアウトですか?というかパーミッションの値
0676nobodyさん2011/01/17(月) 04:49:50ID:???
PHPはウェブサーバー上で実行されるので通常はブラウザ等でアクセスしても
ソースコードがバレることはない。
そのサーバーに第3者がFTP等でログインできるのならばそれぞれのユーザーのアクセス権限と
ウェブサーバーの実行権限、ディレクトリのアクセス権限の設定に依存する。

> 呼出、書込、実行の内ドレをONにするとアウトですか?
それぞれの設定の意味を理解していないのだろうが質問の意味が不明になってる。
どれをONにしてもそれだけでソースコードがバレることはない。
というより呼出をOFFにしたらPHPが実行されない。
0677nobodyさん2011/01/17(月) 06:32:09ID:???
まぁソースコード見えるのはサーバ管理者ぐらいだな
0678nobodyさん2011/01/17(月) 08:40:45ID:???
そもそも第三者が不正アクセスしてでも見たくなるようなご大層なソースコードが書かれてるかって話だ
0679nobodyさん2011/01/17(月) 09:46:27ID:???
Zend Guard おすすめ
0680nobodyさん2011/01/17(月) 14:04:28ID:???
データ流出の大半は内部の犯行

ソースは過去のこのスレ
0681nobodyさん2011/01/17(月) 22:54:20ID:jz/VSNo7
ZFダウンロードしに行ったら、Zend Server Community Editionってのがあったんですけどコレってどうなんですか?
検索してもあまり情報がなかったもので
よく分からないけれど、XAMMのようなものですか?
0682nobodyさん2011/01/17(月) 22:59:23ID:???
>>681
?Zend Server Community Edition (CE) is a lightweight version of Zend Server that is absolutely free to use in
development or in production. It is simple to install and to use, provides basic performance optimization, and is
supported only through the Zend support forums.
0683nobodyさん2011/01/17(月) 23:08:56ID:jz/VSNo7
英語力がないんですが、簡単にPHPを始められると言う事はやっぱXAMMPみたいなのかな?
0684nobodyさん2011/01/18(火) 00:29:01ID:???
APサーバです
0685nobodyさん2011/01/18(火) 00:49:32ID:???
XAMPPは環境を作れない初心者のための入門セット
Zend Serverは本番環境を配置・運用・管理するためのガチセット
0686nobodyさん2011/01/18(火) 04:30:41ID:???
>>682
まだこんな馬鹿がいるのか
0687nobodyさん2011/01/18(火) 06:40:20ID:IKvWNu/I
馬鹿と言われたらすみません、同一人物ではありませんが
関数講座で

get_magic_quotes_gpcが無効なら文字列をクォートを取り除く

if ( get_magic_quotes_gpc() ) {
$str = stripslashes( $str );
}

とあったのですが、get_magic_quotes_gpc関数はONなら1、OFFなら0を返すと書いてあります
なのにこれじゃあONの時1=trueになってクォート取り除かれちゃいませんか?
そんでOFFの時0=falseになってクォート取り除かれないんじゃないんでしょうか?
0688nobodyさん2011/01/18(火) 07:13:12ID:???
>>687
そのコードは不要な自動エスケープ処理を除去するのが目的なのでそれで正解。
magic_quotes_gpcがONの場合、getやpost等された文字列が勝手にエスケープ処理されてしまうが
それだと困る場合にそのような処理を行う。

現在のPHPはmagic_quotes_gpcの使用は非推奨だが、かつてはデフォルトでONになっていることもあった。
自動でエスケープ処理される方法はaddslashes()と同じだが、セキュリティの問題から
addslashesの使用は推奨されていない。
0689nobodyさん2011/01/18(火) 07:31:54ID:???
OFFの時取り除いたらおかしいとは思わんのかね
0690nobodyさん2011/01/18(火) 08:14:11ID:???
>>689
今日は上級者スレで「かい?」を連発しないでくださいね
0691nobodyさん2011/01/18(火) 09:20:26ID:IKvWNu/I
>>688
それじゃ日本語は
get_magic_quotes_gpc() が有効(ON)なら文字列をクォートを取り除く
になりませんか?
0692nobodyさん2011/01/18(火) 11:23:43ID:???
>>691
だからそれでいいんだってば。
クォートを取り除くのが目的のコードなんだから。

magic_quotes_gpcがONのとき:勝手に付けられたクォートを削除
magic_quotes_gpcがOFFのとき:何もしない
0693nobodyさん2011/01/18(火) 11:28:11ID:???
magic_quotes_gpcがONのとき:
GET等で文字列が送信される→PHPが勝手にエスケープ処理してクォートを追加してしまう

そうすると$GETの中身が既にクォートが付いたものになっているから、
自分で文字列の中身を検査したり画面に表示するときに困るでしょ。
だからmagic_quotes_gpcがONのときはstripslashesでクォートを除去するの。

DBに送信するときはFW等の機能を使うかmysqli_real_escape_string等でエスケープしなきゃ駄目だよ
0694nobodyさん2011/01/18(火) 11:30:21ID:???
あ、ごめん。つられて書き間違えたけど、
追加されたりstripslashesで削除したりするのはクォートじゃなくてバックスラッシュね。
0695nobodyさん2011/01/18(火) 11:30:33ID:???
俺が正しく日本語変換してやる
●get_magic_quotes_gpc() がTRUE(magic_quotes_gpcの設定がON)ならば文字列 の クォートを取り除く
なんだその滅茶苦茶な日本語を書いた奴は
なんだよ文字をクォートを取り除くって
そんでもって無効なのに取り除いてどうする
どこを参考にしたんだ
0696nobodyさん2011/01/18(火) 11:31:44ID:???
class name1 extends name2{
}

class name2のメンバ変数はname1 がnewされた時に設定されるんだよね?
それとも、もともとextendsの分にはメンバ変数を書いても意味が無い?
0697nobodyさん2011/01/18(火) 11:34:58ID:???
>>691
あぁ、質問の意味がやっとわかった。
>>687に書いてある
>> get_magic_quotes_gpcが無効なら文字列をクォートを取り除く
の日本語とコードが矛盾しているといいたかったのね。
多分筆者の書き間違いでしょ。(正しくは「〜が有効なら」)
06986962011/01/18(火) 11:38:31ID:???
勘違いでした
すまそw
0699nobodyさん2011/01/18(火) 12:05:55ID:IKvWNu/I
やっぱり書き間違いでしたか、くだらない質問でしたがありがとうございます!
0700nobodyさん2011/01/18(火) 16:55:32ID:aMdgL1VO
ブラゲー作ろうと思ったんだけど、
Ajaxで処理をするたびに毎回プログラム側で設定ファイルを読み込んだり
DB接続したりという処理が発生するので、
ネトゲみたいに常にプログラムを稼働しておいて、入力があれば実行して何かを返すようにしたいんだけど
何か面白いやり方ないですか?
0701nobodyさん2011/01/18(火) 17:03:02ID:???
JSのonclickとかonkeydownとかでやればいいんじゃないの?
0702nobodyさん2011/01/18(火) 17:23:19ID:???
>>700
キャッシュするのはどうだ?
設定ファイルぐらいならセッションに入れても良いと思う。
0703nobodyさん2011/01/18(火) 17:26:08ID:???
fastcgiとかどうだろうか。phpでは使ったことないけどperlでは
結構効いたよ。
0704nobodyさん2011/01/18(火) 17:38:48ID:???
>>700
設定ファイルの大きさ・数・読込みかたにもよるが、普通はOSのキャッシュに入る
DB接続はコネクションプール使えば良い
あとはアクセラレータを使ってないなら、APCとか使えば体感できるくらいに速度変わる
0705nobodyさん2011/01/18(火) 17:44:14ID:aMdgL1VO
>>704
例えば、初期設定でinclude_pathを設定して
そこにあるクラスファイル(例えばだけど100個くらい)をrequire_onceで読み込んで、
毎回データベースから数百件のデータを読み込んだりとか、
そういう処理が入るんだけど、こういうのもキャッシュ化されんのかな

今考えてるのは
鯖起動→whileループ→外部から命令があったら処理の実行して結果を返す

このwhileループ時にどうやって外部から(ユーザーからのパラメータ送信など)に対応しようかとか、考えてるの
あと、ループ作成しておくと、鯖起動時にデータベースからデータを取得したら保持できるかなと思って
(某ネトゲのエミュ鯖運営したときにJavaでやってた処理を真似てるだけなんだが)
0706nobodyさん2011/01/18(火) 18:06:13ID:???
>>705
APCはphpの中間コードをキャッシュしてくれる
当然includeも対象になっており、1回includeすれば中間コードの形で保持される。
DBについても、APC使えば同じクエリならキャッシュされる。

後半部が良くわからんのだけど、PHPを実行しっぱなしにするって意味?
でもajax使おうがクライアント側からはwebサーバ(例えばapache)を介してアクセスにくるわけだから
apache→php実行 という流れは変わらないよね?(見当違いの事言ってたらごめん)

アクセス毎に実行コードにコンパイルかけてるからphpは遅いわけなので
そこをコンパイルかけないで中間コードを保持するAPC使えば速くなるよ。
0707nobodyさん2011/01/18(火) 18:11:59ID:aMdgL1VO
fm、APCちょっと調べてみます
ありがとうございます!

多分、APC導入していこうと思います!
0708nobodyさん2011/01/18(火) 18:30:15ID:???
初心者スレだからなんだろうけどAPCの使い方が間違ってるな
ブログなんかみても入れましたはい早くなったとか言ってる人多いし
0709nobodyさん2011/01/18(火) 18:44:21ID:???
>>708
出切れば間違っている部分を指摘して頂けると助かるのですが。
0710nobodyさん2011/01/18(火) 18:47:21ID:???
多分>>706が言いたいのは、データベースで敵データ管理してたら
同じ敵を複数の人間が攻撃した時に、データがバグったりするんじゃね?ってことじゃね

データベースから引き出す→変更加える→データベースに戻す
この時に、引き出して変更加えて、別のやつが引き出して、最初のやつが戻したらどうなんの?ってこと

勝手にエスパーしただけだが
0711nobodyさん2011/01/18(火) 19:00:54ID:???
そんな更新の仕方では、DBを使う意味がない。
DBを使うならDBの作法でアクセスしなきゃ意味ないじゃん。
0712nobodyさん2011/01/18(火) 19:01:38ID:???
> DBの作法
0713nobodyさん2011/01/18(火) 20:15:06ID:???
XHRの受信を張りっぱなしにして送信は別でやればいいんじゃないのってことじゃないの
0714nobodyさん2011/01/18(火) 21:35:55ID:???
素直にソケット使えよw
0715nobodyさん2011/01/18(火) 21:55:17ID:???
それflash
0716nobodyさん2011/01/18(火) 21:57:33ID:aMdgL1VO
>>715
flash使わない予定です
HTML+XHR(jQuery)+PHP+MySQLで実装予定です。

座標の監視とかそこまでのものを作るんじゃなく、
敵1対を複数で倒すような感じのものにしようと思ってるので、
複数の人が同時に1つのデータにアクセスすると更新するまでに呼び出したりしそうなので、
順番を決めるような方向でいきたいと思ってます。

すみません、本来の目的を後出しにしてしまって。
0717nobodyさん2011/01/18(火) 22:06:21ID:???
>>716
それを共有鯖で使う気かい?
0718nobodyさん2011/01/18(火) 22:11:48ID:aMdgL1VO
>>717
もちろん自鯖で実装予定です
■ このスレッドは過去ログ倉庫に格納されています