【PHP】質問スレッドpart24【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/11/01 04:09:15ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
0751nobodyさん
04/11/17 12:42:17ID:???http://jp2.php.net/manual/ja/function.strtr.php
0753nobodyさん
04/11/17 13:15:02ID:???ありがとうございました。
一部だけ小文字にしたいので strtr を使おうとマニュアルを見たら
> 引数を2つ指定してコールっ_場合
なんてのが。
0754695
04/11/17 14:02:03ID:???最終的に検索クエリが遅いのは明らかなので、
ページングした際に再度クエリを投げないで済めば
早くなるのはわかっているんです。
なので、limit掛けない結果をキャッシュするしかないかなぁ?
ってのが>>742です。
>>750
文字列マッチでの検索とかした場合ですか?
シーケンシャルに読むだけならクエリー自体が軽いので、
ページングしても重くならないと思います。
もし文字列マッチでも早いなら、ソース見るしかないですかね・・・。
0755nobodyさん
04/11/17 14:12:32ID:???を試しているのですが、register_shutdown_functionに登録された
関数内において、ログファイルの書き出しも、クラスファイル等のincludeも
いずれもpermissionエラーとなって実行できないのですが、
register_shutdown_functionの実行権限は、mainの処理とは異なるのでしょうか?
バージョンは4.2.3です。
0756nobodyさん
04/11/17 15:06:42ID:???返ってくるけど。
0757nobodyさん
04/11/17 15:11:44ID:eshx/1+6>>688で可変長引数の質問について教えてください。
function test() {
list($a, $b, $c) = func_get_args();
}
のように、可変長引数にするメリットはなんでしょうか?
あんまり思いつかないのですが…。
>>691で言われているようにデフォルトを与えた方が
楽な気がします。
0758nobodyさん
04/11/17 15:22:26ID:???apacheをどのような設定にすれば使用出来るようになるのでしょうか?
0760nobodyさん
04/11/17 15:35:58ID:???文字列マッチの場合なり
0761695
04/11/17 16:04:49ID:???どひゃー。
ちょっと検索対象のフィールドの定義と、
1レコードのバイト数(概算)教えてもらえますか?
(中間一致ならindexは効かないですもんね)
他になにかやらかしてそうな設定ってあるかな・・・
0762nobodyさん
04/11/17 16:09:58ID:???0763nobodyさん
04/11/17 16:12:20ID:ewTnqAG8だとした場合、二つをマッチングさせて、マッチしたら1,マッチしなかたら
0を入れた配列$cを作りたいのですが、可能でしょうか?
$cの値は、0,0,1としたいんです。
どういうことかといいますと、$aが商品番号の配列。$bがユーザが持って
いる(購入済)商品番号。この情報から購入フラグ(購入済み0,未購入1)
配列を作りたいんです。どうかお知恵をお貸し下さい。よろしくお願い
致します。
0764nobodyさん
04/11/17 16:12:37ID:???0765763
04/11/17 16:15:42ID:ewTnqAG8出来ましたら、$cは連想配列にして、echo $c[one];としたら0
と出したいんです。自分にはむずかしすぎて、取っ掛かりさえつかめない
状態です。
0767748
04/11/17 16:42:06ID:???いやぁ、私が言いたかったのは、別に自前でキャッシュなんてしなくても、
limitかけないでクエリー発行して、mysql_data_seek()をつかえば、
MySQLの方でやってくれるぞ。って話で。
その際システム側でどんだけメモリなりのリソース食うかは預かりしらんが、って事で。
0768nobodyさん
04/11/17 16:51:04ID:???どのへんがどうわからないの?答えようにも自分には(質問の意図をつかむのが)むずかしすぎて、取っ掛かりさえつかめない状態です。
とりあえず「いち、に、木」はやめよう。
0769nobodyさん
04/11/17 16:52:34ID:???0770768
04/11/17 17:01:31ID:???あれだけじゃ悪いから、スマートじゃないけど分かりやすい例ね。配列関連の関数を探すともうちょっと上手くかけるよ。
$a = array('one', 'two', 'three');
$b = array('three');
foreach ($a as $shohin) {
foreach ($b as $konyuzumi) {
if ($shohin == $konyuzumi) {
$c[] = 1;
} else {
$c[] = 0;
}
}
}
echo $c[0],'<br />';
echo $c[1],'<br />';
echo $c[2];
0771695
04/11/17 17:07:52ID:???となると、MySQLの設定の問題又はサーバースペックの問題ってことですね。
スレ違い申し訳ない。
たしかに、そんなにスペックのいいサーバーではないのですが、
普通に1.5秒以上掛かります・・・
0773nobodyさん
04/11/17 17:23:22ID:zF/X7yAnダウンロードダイアログ画面を出して
ファイルをダウンロードさせたいのですが、
大きいファイルだと保存画面がでるまでかなり時間がかかります。
これは何とかなりますか??
<?php
//down.php?file=ダウンロードファイル でアクセス
download($file);
function download($file){
//ファイルサイズ
if (($content_length = filesize($file)) == 0) {
die("error1");
}
//ヘッダ送信
header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
header("Content-Length: ".$content_length);
header("Content-Type: application/octet-stream-dummy");
//出力
if (!readfile($path_file)) {
die("error2");
}
}
?>
0775nobodyさん
04/11/17 17:35:00ID:???仮に「自前でキャッシュ」するなら
「limitかけないでクエリー発行して、mysql_data_seek()をつかう」
の場合でも、どちらもシステム(PHP側)のリソースは食うので後者でOkかと。
サーバサイドカーソルはPHPでは無理だし。
しかしMySQLでlimit掛けても、内部的に条件判別に利用された結果
(全結果ではなく対象リストみたいなもの)はキャッシュされるので、
テーブルの値に変化とかなければ、2回目以降は比較的早く出る筈なんだが
システム上の作りが変なのか、特殊なのか…
0776nobodyさん
04/11/17 17:55:44ID:???だよね。0.05秒だったのが次やったら0.01秒切ったし。
0778nobodyさん
04/11/17 19:39:20ID:???0779822
04/11/17 21:14:58ID:???あとPEAR::DBとの比較ってどっかにありますか??
0780773
04/11/17 21:36:19ID:zF/X7yAnまさにwinで↑なんですが解決法書いてあらず・・
0782781
04/11/17 22:36:30ID:???0783781
04/11/17 22:42:49ID:???>>773のスクリプトそのままで開いてみたけど特に問題は無いよ。
PHP 自体のバグだと思うから Version Up すれば解決するぽ
0784nobodyさん
04/11/17 23:59:10ID:OsVB8E9H借りてるレン鯖で設定しているあるメールアドレス宛てにメールが届いたら、
そのメール受信をキッカケにプログラム(自作のPHP)を
起動させてそのメールを処理(データベースに収納したり自動返信したり等)を
させたいのですが、そういうことは可能でしょうか?
自分で思いつく限り検索してみたところ、MTAでパイプ渡しが
どうのこうの・・・と、意味がよく分かりませんでした。
それに、そういうことは共用鯖では実現が難しそうな感じでした。
やっぱり専用鯖が必要なのでしょうか?(専鯖ならどこでも可能??)
すみません、自分のレベルが低いので分かりにくい質問かもしれませんが
どなたか技術的に分かる方がいらっしゃいましたら教えてください。
0785nobodyさん
04/11/18 00:14:18ID:???forwardやprocmail等を使えば可能だけど共用鯖なら無理かも知れんね。
専鯖でも使えるかどうかはその鯖の設定次第。
0786773
04/11/18 00:20:26ID:???ありがとうございます。
環境変えてやってみます。
0787nobodyさん
04/11/18 00:34:20ID:GCCM5gSlお答えありがとうございます。
ということは、「forward」や「procmail」というのが
使えるかどうかを鯖会社に質問すればOKですか??
もしかしたら専鯖じゃなくてVPSっていうのでも出来るのかな・・・?
0789nobodyさん
04/11/18 01:02:50ID:???0790nobodyさん
04/11/18 01:50:03ID:AjTyCRAuマニュアルを探したんですけど日付に変換するものしかなくて・・・
例えば、6000秒で01:40:00って表示するようなのが欲しいんです
0791nobodyさん
04/11/18 02:01:24ID:???0792nobodyさん
04/11/18 02:19:03ID:???$sec = 6000;
echo date('H:i:s', mktime(0, 0, $sec));
一応mktimeでいけるね
24時間以上だとこのままでは無理だけど
0793792
04/11/18 02:32:31ID:???参考になるか分からんけど漏れが作った奴載せとく
function sectohour($sec) {
$hour = floor($sec / 3600);
$sec %= 3600;
$min = floor($sec / 60);
$sec %= 60;
return(sprintf('%02d:%02d:%02d', $hour, $min, $sec));
}
0794nobodyさん
04/11/18 03:35:35ID:???FOMA端末のUA識別は
"DoCoMo/^2\.0" という表記で良いんでしょうか?
<?
$ua = $_SERVER["HTTP_USER_AGENT"];
if(ereg("DoCoMo/^2\.0",$ua)){
header("Location: aaa.html");
exit;
}else {
header("Location: bbb.html");
exit;
}?>
FOMAで「aaa.html」 それ以外は「bbb.html」へ飛ばすようにしてるつもりなのですが、
上手く動作しません。
0795nobodyさん
04/11/18 04:36:45ID:???location hoge は絶対パスで書かないと駄目だとか
0796790
04/11/18 08:35:27ID:???レスありがとうございます。なるほど、mktimeですか気付きませんでした。
しかし、24時間以上を扱う予定なので793さんのコードを参考に作ってみます。
みなさんありがとうございました。
0797nobodyさん
04/11/18 09:49:06ID:jaTiTZm1Fatal error: Call to undefined function: mb_convert_encoding()
のエラーで止まって動かなくなりました
bm_convert_encoding()の動きはわかるんだけど
PHPのライブラリ?から読み込んでるんですか?
0798nobodyさん
04/11/18 10:23:09ID:???環境は?
Windowsだったらdll読み込んでないんだろうし、
Linux系だったらconfigureで-with指定してないんだろうな。
0800nobodyさん
04/11/18 11:06:28ID:???c:\windows\system32にdllをおいてApacheを起動するだけでOKですか?
0801nobodyさん
04/11/18 11:10:35ID:???0802797
04/11/18 12:57:08ID:jaTiTZm1phpdevをインストールした状態です
0803nobodyさん
04/11/18 14:57:43ID:z5HMJmKGhoge=aaa&piyo=bbb
上の文字列の「aaa」の部分を抜き出したいのですが、うまい正規表現の仕方はないでしょうか?
preg_match_all("/hoge=(.+?)\&/",$str,$match);
だと、hoge=aaaのマッチが取れないのです…。
0805nobodyさん
04/11/18 15:28:11ID:???テンプレ
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
http://pc5.2ch.net/test/read.cgi/php/1069245758/
0806nobodyさん
04/11/18 15:35:00ID:???$str = "hoge=aaa&piyo=bbb";
parse_str($str);
echo $hoge;
echo "<br>";
echo $piyo;
0808805
04/11/18 15:46:53ID:???正規表現勉強するなら、ここのテンプレにあるぞ。
っと言ったつもりだった。
あっちで質問してら。
0810nobodyさん
04/11/18 15:55:34ID:???preg_match_all の方を使おうとしてるのを考慮すると、>>809の可能性も。。。
0811nobodyさん
04/11/18 17:12:40ID:???countとsizeof関数は、何か違うのでしょうか?
マニュアルには、sizeofはcountのエイリアスとしか記載されていませんでしたが
使い分ける必要等はあるのでしょうか?
0812nobodyさん
04/11/18 17:40:40ID:???0815nobodyさん
04/11/18 18:03:03ID:???ごっちゃになるからだけだと思う。
sizeof導入も、C書きの人がすんなり入りやすいためだけだろう
多分。
0816nobodyさん
04/11/18 18:03:29ID:???使わない方が無難
0817軟式PHP
04/11/18 18:07:36ID:???0818nobodyさん
04/11/18 18:18:24ID:8nQGI/2aそこで質問なのですが、
ASPでのresponse.endに該当する記述は、PHPだと何になるのでしょうか?
具体的にはフォームから送られた内容を確認するために、
受け取った変数の中身をechoで表示したところで、1度スクリプトを停止させたいのです。
基本的な事で申し訳ありませんが、よろしくお願いします。
0819nobodyさん
04/11/18 18:22:11ID:???0820nobodyさん
04/11/18 18:58:04ID:???0821nobodyさん
04/11/18 19:05:33ID:bps4zhVUたまに変換されずになることがあります。
変換内容はュ→ユのように小文字を大文字に直すだけなんですが
何か原因があるのでしょうか?
また、str_replace()とか使った方がいいですか?あまり違いがわからなくて・・。
0823822
04/11/18 19:13:29ID:???そういう処理はマルチバイトを考慮しない関数は使わない方がいい。
色々ググってみ。
0824nobodyさん
04/11/18 19:29:34ID:???php_openssl.dllが見つかりませんというエラーになります。
extension_dirをフルパスに設定しても./(ドットスラ)にしても
見つからないらしいです。
他にも何か設定を変える必要があるんでしょうか?
0825nobodyさん
04/11/18 19:39:34ID:???2. 違うphp.iniを変更している。
0826nobodyさん
04/11/18 19:53:52ID:???1. きちんとあります。それらしきところ(system32配下やカレントディレクトリなど)に
いろいろ配置してみましたがダメでした。見つからないらしいです。
2. extension=php_openssl.dll の行をコメントアウトして再起動するとエラーが消えるので
php.ini自体は正しいと思われです。
0828nobodyさん
04/11/18 20:45:57ID:???http://php.s3.to/man/ref.openssl.html
>Win32ユーザへの注意: このモジュールをWindows環境で使用するには、PHP/Win32バイナリパッケー ジのDLLフォルダからlibeay32.dllを使用する WindowsマシンのSYSTEM32フォルダ(例: C:\WINNT\SYSTEM32または C:\WINDOWS\SYSTEM32)にコピーする必要があります。
これではないのか?
0829nobodyさん
04/11/18 20:49:13ID:???libeay32.dllをsystem32フォルダにコピー
環境変数OPENSSL_CONFを新規作成してopenssl.cnfのパスを指定
0830nobodyさん
04/11/18 20:51:20ID:???編集する場合はエディタから開くで指定する。
0831nobodyさん
04/11/18 22:14:30ID:VOS+8K87のように、オブジェクトを返すメソッドから直接そのメソッドを呼ぶことは、
許されてないのでしょうか?
パースエラーになります。
PHP4です。
0832nobodyさん
04/11/18 22:27:31ID:XCBl1M85PHPで一番得意なのはどういう処理ですか?
(DB操作や文字列処理、数値計算など)
0834nobodyさん
04/11/18 22:40:25ID:???マニュアルより。
PHPを使用する上で最も優れている点は、初心者に対しては非常に分かり 易いと同時に、
プロフェッショナルのプログラマに対しては多くの進んだ機能を提供している点です。
PHPの機能を羅列した長い一覧表を読まなければならないのかと心配する必要はありません。
PHPはすぐに始められますし、数時間の内に簡単なスクリプトが書けるようになります。
0836nobodyさん
04/11/18 22:55:21ID:???0838nobodyさん
04/11/18 23:01:18ID:???他言語との速度比較をする際に参考にしようと思って質問しただけです
>>834
なるほど。
ということは処理的な特徴は特にないのですか?
(私はPHPを使った開発はしてません)
>>835
なぜ?
>>836
Java書けますけど
私もそう思います
0840nobodyさん
04/11/18 23:07:11ID:???それなら最初から速度に関して質問すればいいでしょ
全体的な処理の速さなら他の言語と違いあるだろうし、規模にもよるんだって回答もあるでしょう。
文字列処理だけ特別に早かったり、数値計算がなぜかすごく遅かったりなんていう言語はあるとは思えん。
0841831
04/11/18 23:13:11ID:???それだと、自分の中で、「PHPつかえねー」って結論になってしまいます。
それだとさみしいな。
0842832
04/11/18 23:16:13ID:???全体的な速度とかは求めてません。
あくまでもPHPとして得意な処理ってなんなの?っていう件でお答えしていただきたかったのです
ちなみに特別に早いとか遅いはないですけど
得意・不得意は絶対にありますよ
特に数値計算は苦手な言語が多いので差が出やすいと思います
0843nobodyさん
04/11/18 23:17:07ID:???そういう方面に使いやすい
0844nobodyさん
04/11/18 23:21:08ID:???0845832
04/11/18 23:22:15ID:???マニュアルでも確認できましたし
やはりそういう得意分野は処理ではなく開発(特に初心者向け)のほうで1歩前に出てるということですね
ありがとうございました。
0848nobodyさん
04/11/18 23:27:05ID:???そう、初心者向けに開発しやすい
お約束が少ない
まぁ玄人(?)でも簡単に書けてすぐ動く。
速さを求めるなら、他のをどうぞ
0850nobodyさん
04/11/18 23:42:50ID:???鯖に易しい
■ このスレッドは過去ログ倉庫に格納されています