【PHP】下らねぇ質問はID出して書き込みやがれ 93
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/02/15(月) 19:23:06ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 92
http://pc11.2ch.net/test/read.cgi/php/1263035502/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0640nobodyさん
2010/03/07(日) 16:48:48ID:???こっちを使えばいいんでない?
http://www.php.net/manual/ja/function.gzdecode.php
0641nobodyさん
2010/03/07(日) 17:01:29ID:nXKvXzTgwhile( $row = mysql_fetch_array($ret) ) { $row_array[] = $row;}
で使いまわせました。ありがとうございます。
あと別な質問なのですが、一般的に同じ処理をする場合、PHPで処理するのとSQLで処理するのはどちらがいいんでしょうか?
レンタル鯖でSQLの負荷なるべく少なくするようにPHPでできる部分はPHPでやろうって思ってたのですが、
SQL使いまくった方が全体の負荷的にはいいのかなって疑問がでてきました。
0642nobodyさん
2010/03/07(日) 17:02:15ID:???使いまくったほうがとか言ってるレベルではDB使うのやめといたほうがいい
0643nobodyさん
2010/03/07(日) 17:05:22ID:nXKvXzTgSQL勉強してきます・・・
0644637
2010/03/07(日) 17:17:37ID:9X9vAVh2あ…php5.2だったので使ってませんでした
ちょっと落としてきます。ありがとうございます。
0645nobodyさん
2010/03/07(日) 17:20:52ID:???0646nobodyさん
2010/03/07(日) 19:14:55ID:tE2+VL65・データを全件表示→10件だけ表示に。
・ページング部分を表示。([1][2][3].....)の表示と(/index.php?p=2)への移動。
まではできたんですが、
この二つを組み合わせる方法がわかりません。
/index.php?p=2に飛んでも、
/index.phpのときと同じ内容が表示されます。
0648nobodyさん
2010/03/07(日) 19:51:39ID:???ども!
ただうちのPHP5.3.0だとそういう動きします
以下のファイル配置でa.php、b.phpどっちもちゃんとhoge.phpをインクルードしてくれる
C:\xampp\htdocs\test\a.php
C:\xampp\htdocs\test\b.php
C:\xampp\htdocs\test\hoge.php
・ a.php内容
<?php
require "/hoge.php";
?>
・ b.php内容
<?php
require "hoge.php";
?>
これがバグなのか仕様なのかすっきりしたいわけです
0649648
2010/03/07(日) 19:52:25ID:sojeiGx10652nobodyさん
2010/03/07(日) 23:40:09ID:???>>651
include_path = ".;C:\xampp\php\PEAR"
.が入ってるから見つからない場合はカレントも見るってことかな?
0654nobodyさん
2010/03/08(月) 13:24:47ID:js+PR+h4exec("nmap -sT -P0 -p 12000 ***.***.***.***", $out, $ret);
var_dump($out);
このような処理をping.phpで保存して
http://example.com/ping.php
で表示したところ、ダンプした値がarray(0)でした。
SSHより、
php -f ping.php で実行したところ、
正常に
array(7) {
[0]=>
string(0) ""
[1]=>
string(76) "Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2010-03-08 13:21 JST"
[2]=>
string(36) "Interesting ports on ***.***.***:"
[3]=>
string(23) "PORT STATE SERVICE"
[4]=>
string(21) "12000/tcp open cce4x"
[5]=>
string(0) ""
[6]=>
string(64) "Nmap finished: 1 IP address (1 host up) scanned in 0.014 seconds"
}
のように値が入っています。
恐らくexecコマンドは結果を待たずにすぐに値を返すので空っぽになってしまうのだと思いますが、
何か対処法はないでしょうか?
0655nobodyさん
2010/03/08(月) 13:41:30ID:???0656nobodyさん
2010/03/08(月) 14:59:50ID:???うちじゃ普通に入るけどなあ
0657nobodyさん
2010/03/08(月) 15:00:16ID:???0658nobodyさん
2010/03/08(月) 15:08:41ID:js+PR+h4apache権限で実行テストする方法ってないですかね
su apache
だとパスワード求められた、わからないorz
0659nobodyさん
2010/03/08(月) 15:20:12ID:???まずはsshで、$ which nmap して
そのパスごとexecに書いたら?
exec("/usr/bin/nmap・・・
とかさ
0660nobodyさん
2010/03/08(月) 15:29:27ID:???apache権限で実行したいなら、いったんrootになってからsuすれば
0661nobodyさん
2010/03/08(月) 15:30:13ID:js+PR+h4レン鯖なのでroot権限もらえないのです
>>659
今ftpUPしてるの終わったら試してみますー
0662nobodyさん
2010/03/08(月) 15:36:24ID:js+PR+h4(ちなみにwhich nmapした結果のパスです)
0663nobodyさん
2010/03/08(月) 15:39:41ID:???0664nobodyさん
2010/03/08(月) 15:48:47ID:???resource(2) of type (stream)
--- SSH上から
*****@s152:~> php -f public_html/*****/ping.php
resource(1) of type (stream)
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2010-03-08 15:46 JST
Interesting ports on ***.***.***.***
PORT STATE SERVICE
12000/tcp open *****
Nmap finished: 1 IP address (1 host up) scanned in 0.015 seconds
popenでwhile(!feof($fp)) {}
で書き出した結果です。
やっぱりブラウザ上からだとうまくいかないです
0665nobodyさん
2010/03/08(月) 16:44:56ID:f9rWk+Ynexecを使っても起動できません
ちなみにローカル環境のみ起動できれば構いません
どなたかご教示お願いします
0666nobodyさん
2010/03/08(月) 16:46:17ID:???0667nobodyさん
2010/03/08(月) 17:41:44ID:???0669nobodyさん
2010/03/08(月) 17:45:26ID:js+PR+h4これはどうしようもなさそうですね
ありがとうございました
0670722
2010/03/08(月) 18:23:37ID:???489 名前: nobodyさん 投稿日: 2009/12/23(水) 00:40:17 ID:5FKPpQ9S
fgetsやCURLでgzip圧縮されたHTTP bodyを元の文字列に復号するにはどうしたらいいのでしょうか
490 名前: nobodyさん 投稿日: 2009/12/23(水) 00:45:48 ID:5FKPpQ9S
gzdecodeは未定義でgzuncompress、gzinflateはデータエラーになりました。
493 名前: nobodyさん 投稿日: 2009/12/23(水) 00:57:59 ID:5FKPpQ9S
自己解決しました。
圧縮されたデータをbase64エンコードしてDATAスキームとして読み込みgzopen -> gzreadしました
$data = curl_exec($ch); //gzip圧縮されたデータ
$data = "data:application/x-gzip;base64,".base64_encode($data); // dataスキームに整形
$fp = gzopen($data,"r"); // gzopen
echo gzread($fp,1024); //読み込み
494 名前: nobodyさん [sage] 投稿日: 2009/12/23(水) 00:59:41 ID:???
file_get_contents("compress.zlib:///home/aaa.gz");
495 名前: nobodyさん 投稿日: 2009/12/23(水) 01:19:52 ID:VLbb10P/
age
496 名前: nobodyさん 投稿日: 2009/12/23(水) 01:27:35 ID:5FKPpQ9S
URLencodeのほうがわずかに軽い?気がする
$data_scheme = "data:application/x-gzip;charset=iso-8859-7,".urlencode(curl_exec($ch));
$fp = gzopen($data_scheme,"r");
echo gzread($fp,524288);
0672nobodyさん
2010/03/08(月) 21:20:03ID:Hw9tq/xF片方はよりパフォーマンスがいいので、できればそちらを使いたいのですが、
インストールされていない可能性があります。
その場合条件文で書くと無駄に長くなってしまう可能性があるのですが、
こういうときに自分で同名のメソッドがあるクラスを作ればスッキリすると思うのですがそういう実装方法は一般的ですか?
例えばmysqlとmysqliを例に出すと、
$dbp = null;
if (class_exists("MySQLi")) {
$dbp = new MySQLi("localhost", "hoge", "foo", "bar");
//略
$dbp->close();
} else {
$dbp = mysql_connect("localhost", "hoge", "foo", "bar");
//略
mysql_close($dbp);
}
となりますが、MySQLiはクラスが用意されてるので、
MyMySQLというクラスを作って、MySQLiのメソッド群を模倣して、
class MyMySQL {
private $dbp = null;
function MyMySQL($host, $username, $passwd, $dbname) {
$this->dbp = mysql_connect($host, $username, $passwd, $dbname);
}
function close() {
mysql_close($this->dbp);
}
}
続く
0673nobodyさん
2010/03/08(月) 21:23:42ID:Hw9tq/xFif (class_exists("MySQLi")) {
$dbp = MySQLi("localhost", "hoge", "foo", "bar");
} else {
include("MyMySQL.php");
$dbp = MyMySQL("localhost", "hoge", "foo", "bar");
}
//略
$dbp->close();
といった感じに、オープン以降は統一できると思うのですが、
こういうやり方はおかしいでしょうか?
何か他にいい方法があったら教えてください。
0674nobodyさん
2010/03/08(月) 21:26:50ID:???0675nobodyさん
2010/03/08(月) 21:27:15ID:Hw9tq/xFこの例でいうと、mysqlとmysqliのことです。
0676nobodyさん
2010/03/08(月) 21:40:56ID:???0677nobodyさん
2010/03/08(月) 21:55:18ID:v7y33OYQ//これをコピーして
if (a) {
print 1;
}
if (b) {
print 2;
//ここに貼りつけると
}
インデントを自動調整して
if (a) {
print 2;
if (b) {
print 1;
}
}
こうなるものってありますか?
eclipse+javaは出来るのにPHPは対応してなかった・・
0680672
2010/03/08(月) 22:06:15ID:Hw9tq/xF私に対してのレスでしょうか?
今後そういうケースに当たったらという話なので、
今そういう壁にあたってるわけではないです。
0682nobodyさん
2010/03/08(月) 22:07:34ID:Hw9tq/xFどうもありがとうございます。
Zend_Db_Adapterは初耳ですがそちらのソースも探してきて眺めてみたいと思います。
0684nobodyさん
2010/03/09(火) 01:31:56ID:tXdsqaljmysql(php_mysql)もしくはmysqli(php_mysqli)を利用してMySQLに接続した場合、ライブラリがLGPLではなくてGPLなので
それらを利用して作ったプログラムもGPLになってしまいますが、PEARのライブラリである
PEAR::DBはPHPライセンスでPEAR::MDB2はBSDライセンスですけどこれらを
利用してMySQLに接続した場合のプログラムのライセンスはどうなるのですか?
やはりGPLになるのでしょうか?それとも一端PHPライセンスやBSDライセンスを挟んでいるのでGPL汚染は無くなるのでしょうか?
0685nobodyさん
2010/03/09(火) 01:59:16ID:???> PHP と MySQL は互換性のない別々のオープンソースライセンスを導入しているので、
> PHP コミュニティでの MySQL の使用を奨励・促進するために特別な除外規定を設けています。
> これにより MySQL AB では、GPL でライセンスされた MySQL ソフトウェアと、
> PHP ライセンスのバージョン 3.0 でライセンスされたソフトウェアで作成される派生物の頒布を許可しています。
> この際、お客様には、PHP ライセンスのバージョン 3.0 に基づいてライセンスされたコードを除くすべてのコードにおいて、
> GNU General Public License の規定をすべての面で順守することが義務付けられます。
つまりMySQLでなんかしてる部分だけGPLになるってことか?
解釈がよく分からないしMySQLのコミュニティで聞くのが手っ取りばやいんじゃね
0686nobodyさん
2010/03/09(火) 10:28:40ID:???0687nobodyさん
2010/03/09(火) 11:03:51ID:???MySQLを利用したソースコードを公開するならGPL
でもGPLだからといって自サーバ内でのみ使うのならソースコードを公開する必要なないんだよ
0688nobodyさん
2010/03/09(火) 12:07:28ID:w/nUscX9makeの途中で止まってしまいます
64bitには入らないのでしょうか?
インストールに成功した方いますか?
0689nobodyさん
2010/03/09(火) 14:13:14ID:???0690nobodyさん
2010/03/09(火) 14:27:52ID:ezJ3thxT↑の「MEGA-RANK系一括登録」のようなものを作りたいのですが、どうやって作ればいいのか検討がつきません
PHPで作れますか?もしくはこんな感じで作れるよって方いたらご教授お願いします
0691nobodyさん
2010/03/09(火) 15:08:46ID:???0692nobodyさん
2010/03/09(火) 15:21:20ID:FVF0JEpR取得先がPHPでWarningを出している場合、取得しないようにしたいのですが、
「Warning」であると言う事を調べる方法はないでしょうか?
0693nobodyさん
2010/03/09(火) 15:22:22ID:???0694nobodyさん
2010/03/09(火) 15:23:42ID:???取得する
↓
preg_replace()でWarningの表記があるか判別
↓
Warningがなければ値をクリア
とかでいいんじゃね?
てか、何がしたいのかわからんが、何をしたいか教えてくれれば
他に良いやり方があると思うんだが・・・
0695nobodyさん
2010/03/09(火) 15:26:57ID:???0696694
2010/03/09(火) 15:27:35ID:???0697nobodyさん
2010/03/09(火) 15:49:00ID:FVF0JEpRちょっとしたリンク集みたいなのを作ってまして、
登録されたURLでWarningが出てるかどうか調べたかったんです。
fsockopenとかで取得先の状態を調べられると思ったのですが、無理なんですね。
やっぱり、一度取得してエラーメッセージを解析する方法しかないのかな。。
0699nobodyさん
2010/03/09(火) 16:09:38ID:FVF0JEpR調べてみるのでURL教えて下さい。
0700nobodyさん
2010/03/09(火) 21:37:38ID:tXdsqaljそうなんです。問題はそこ。
いったん別のオープンソースライセンスのソースを通った場合はどうなるかって事です。
しかもGPL汚染を受けるのはlibmysqlでPHPライセンスのmysqlndを利用すればGPL汚染も無くなりますよね?
ただmysqlndを使って開発をしたとしても相手の実行環境が必ずしもmysqlndではないって事もありますよね。
特にレンタルサーバの場合、利用者が接続ライブラリを選択なんてできないでしょうから
>>686,>>687
それは知っています。
問題は上記に書いたように「PHP用のGPLライセンス除外規定」と「別のオープンソースライセンスのソースを通った場合」です。
>自サーバ内でのみ使うのならソースコードを公開する必要なないんだよ
それも変わりきっています。
でもGPLになるのは変わりませんよね。
0701nobodyさん
2010/03/09(火) 22:00:15ID:???PHP上で動くスクリプトにはライセンス関係ない
0702nobodyさん
2010/03/09(火) 23:06:49ID:???GPLのものじゃなくてまず、mysqlの決めたルールに従うんですよ。
汚染とか関係ない。
0703nobodyさん
2010/03/09(火) 23:48:52ID:???一つのテーブルに、書き込みログを30万レコード記録しているのですが、
だんだん処理が重くなってきています。
軽くする場合、どのような方法がありますか?
0704nobodyさん
2010/03/09(火) 23:53:18ID:???0705nobodyさん
2010/03/10(水) 00:00:31ID:???こんな感じの
単純なクエリーのレスポンスです。
5万レコードなら0.05秒とかで返ってくるのですが、
レコードが増えるにつれ1秒くらい掛かってしまいます。
データ容量の制限もあるので、テーブルを分散させるのが一般的な対処方法ですか?
0706nobodyさん
2010/03/10(水) 00:02:08ID:???0707nobodyさん
2010/03/10(水) 00:04:42ID:???0708nobodyさん
2010/03/10(水) 00:17:30ID:???0709nobodyさん
2010/03/10(水) 01:12:26ID:???0710nobodyさん
2010/03/10(水) 01:16:58ID:???それMySQLがGPLライセンスの意味無くなるぜ。
>mysqlの決めたルールに従うんですよ。
それが正しいなら今頃MySQLはGPLを採用してないで
MyQSL Licenseてライセンスを作っていることでしょう。
ここで従うべき物はMySQLの決めごとではなくて、GPLの決めごと。
0712nobodyさん
2010/03/10(水) 09:14:18ID:sEFtoxmN暗号化でも出来ればと思ってます。
header("test: himitsu");
himituの部分をとりあえずbase64化したのですが、受け取り側でdecodeしたら文字化けしてしまいます。
何か簡単にできる暗号化があれば教えていただけませんか。
0713nobodyさん
2010/03/10(水) 09:21:55ID:???0715712
2010/03/10(水) 10:24:59ID:sEFtoxmNなるほど。
mb_convert_encodingでutf-8とかにしてからやったほうがいいかもしれないですね
ちょっとやってみます
ありがとうございます
0716nobodyさん
2010/03/10(水) 10:53:52ID:???0717nobodyさん
2010/03/10(水) 10:56:15ID:???0718nobodyさん
2010/03/10(水) 11:13:49ID:???0719nobodyさん
2010/03/10(水) 11:24:48ID:8zSSeEnypreg_replace_callback( '@(<\?php.*?\?>)@mi', 'hoge', $val );
こんなソースがあるんですが、正規表現で@を使ってるのを初めて見ました。
この場合の@は/と同じ意味になるんでしょうか?それとも他の意味があるんでしょうか。
教えてください。
0720nobodyさん
2010/03/10(水) 11:25:12ID:???俺は{}派
0721nobodyさん
2010/03/10(水) 11:58:02ID:8zSSeEnyありがとうございます。同じなんですね
あともう一つ、
preg_match('!<(/p)>!')
preg_match( "|\n</p>$|")
最初と最後がエクスクラメーションだったり
縦線だったりする時はどういう意味なんでしょうか。
0722nobodyさん
2010/03/10(水) 12:07:25ID:cTVjM4iNfor ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <=9; $j++) {
echo "$i × $j = " . $i * $j . "<br>";
}
}
を実行すると
1 × 1 = 1
1 × 2 = 2
1 × 3 = 3
・
9 × 7 = 63
9 × 8 = 72
9 × 9 = 81
になるのですが、どのような処理を行っているのかイマイチわかりません。どなたかわかりやすく教えていただけませんか
0723nobodyさん
2010/03/10(水) 12:28:04ID:???0724nobodyさん
2010/03/10(水) 12:31:06ID:???http://pc12.2ch.net/test/read.cgi/tech/1261057499/
0726>>722
2010/03/10(水) 13:39:24ID:cTVjM4iNググったら↑の文を見つけて解決しました。答えてくださった方ありがとうございました
0727nobodyさん
2010/03/10(水) 14:06:28ID:8jD6opA3$b = 2;
$ex = '+';
echo $a.$ex.$b;
というコードがあるとして出力すると「1+2」となります。
結果として「3」が表示されて欲しいのですが、
上記のように式を変数で置き換えるのは駄目なのでしょうか?
0728nobodyさん
2010/03/10(水) 14:12:14ID:???0729nobodyさん
2010/03/10(水) 14:19:23ID:???見解の違いどころか>>714みたいなトンチンカンも現れた。
MySQLはGPLかコマーシャルライセンスかのデュアルライセンスを採用している。
0730nobodyさん
2010/03/10(水) 14:27:38ID:pOogiIvE0731nobodyさん
2010/03/10(水) 14:28:46ID:???0733nobodyさん
2010/03/10(水) 15:08:50ID:???はてなブックマークみたいな物を作りたいのか?
>>732
そういうこと。
>>714みたいな馬鹿はもうMySQLのライセンス違反していそうだけどね。
>>714がつとめているソフトハウスさんは大変だ。
0735nobodyさん
2010/03/10(水) 15:34:08ID:???会話が成立してないのでこれでも読んどけ。
http://www-jp.mysql.com/about/legal/licensing/faq.html
0736nobodyさん
2010/03/10(水) 15:43:30ID:pOogiIvEhttp://www.net.c.dendai.ac.jp/~keiju/#A2_3
ニコニコブックマークっぽいやつ
0738nobodyさん
2010/03/10(水) 15:47:04ID:PG8HaZ2b<?if(stristr($_SERVER['PHP_SELF'], "/index.php")){echo " hoge";}?>
<?if(stristr($_SERVER['PHP_SELF'], "/2/index.php")){echo " hoge";}?>
<?if(stristr($_SERVER['PHP_SELF'], "/3/index.php")){echo " hoge";}?>
としたいのですが、
TOPページは、URL/index.phpのため、大丈夫なのですが、
その他ページでは、URL/2/index.phpな為、
1行目の/index.phpも含まれ、2つ表示されてしまいます。
回避する方法は有りますでしょうか??
■ このスレッドは過去ログ倉庫に格納されています