【PHP】質問スレッドpart31【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/27(日) 00:07:12ID:eBvjdczp【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0797nobodyさん
2005/12/26(月) 21:37:15ID:???$a[1] = 3;
$a[3] = 1;
$a[5] = 1;
$a[6] = 8;
$a[7] = 9;
とある時に、定義されてない$a[2]、$a[4]に空の値("")を入れて、並びもキー順にしたいのですが、今のやり方はまずforeachで回してチェックして定義されてなければ""を入れ
$a[0] = 1;
$a[1] = 3;
$a[3] = 1;
$a[5] = 1;
$a[6] = 8;
$a[7] = 9;
$a[2] = "";
$a[4] = "";
あとからキー順に並びかえてます。
$a[0] = 1;
$a[1] = 3;
$a[2] = "";
$a[3] = 1;
$a[4] = "";
$a[5] = 1;
$a[6] = 8;
$a[7] = 9;
どのキーが定義されてないか、というのと定義済みキーの値は変動します。
どなたかうまいやり方があればご教示願います。
0798nobodyさん
2005/12/26(月) 22:03:45ID:???キーの抜けチェックはforeachで回すしかないんじゃなかろうか。
そのforeachの書き方自体は何種類かありそうだけど。
キー順並び替えは ksort($a); で一発では?
0799nobodyさん
2005/12/26(月) 22:07:36ID:???0800nobodyさん
2005/12/26(月) 22:13:54ID:???そうですかー、並び替えもそれでやってます。一発でぽんとやってくれる関数とか無いかなーと探してまして。
>>799
並びかえないと>>797の二番目の順番のままなのであとの処理に影響が出てしまうので…
0801nobodyさん
2005/12/26(月) 22:19:36ID:???$max = max(array_keys($a));
for($i = 0; $i <= $max; $i ++) $a0[$i] = (isset($a[$i]))? $a[$i]: "";
$a = $a0;
0802nobodyさん
2005/12/26(月) 22:32:25ID:D+i6TPINdくす
Objectにする程でもないので2行で我慢します
行数より無駄に変数割り当てるのに抵抗あるんだが
Perl出身ですまそ
0803nobodyさん
2005/12/26(月) 22:39:43ID:???ありがとうございます。
一回別の配列に入れて整えるわけですね。やってみます。
どうやら一発でぽんとは無理っぽいですね。ユーザ関数にして使うことにします。
0804nobodyさん
2005/12/27(火) 01:08:06ID:???質問の内容はパフォーマンスです。当方で「ionCube PHP Accelerator」の環境が無いので
そのパフォーマンスをJAVA(jsp)と比べた値を得たいのです。
PHPのソースは以下の通り5000までの素数を得るものです。
0805nobodyさん
2005/12/27(火) 01:09:17ID:???// 処理開始時間を取得して表示する
list($sec1, $sec2) = explode(" ", microtime());
$start = $sec1 + $sec2;
echo 'start = '.$start.'<br>';
// 5000までの素数を算出して表示する
for($i = 2; $i <= 5000; $i++) {
$divisor = 0;
for($j = 1; $j <= $i; $j++) {
if($i % $j == 0) {
$divisor++;
}
}
if($divisor == 2) {
echo $i.'<br>';
}
}
// 処理終了時間を取得して表示する
list($sec1, $sec2) = explode(" ", microtime());
$end = $sec1 + $sec2;
echo 'end = '.$end.'<br>';
// 処理時間を算出して表示する
$elapse = $end - $start;
echo 'elapse = '.$elapse.'秒';
?>
0806nobodyさん
2005/12/27(火) 01:10:30ID:???<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page import="java.util.*" %>
<%
long start = new Date().getTime();
%>
start = <%=start%><br>
<!-- 5000までの素数を算出して表示する -->
<%
int divisor;
for(int i = 2; i <= 5000; i++) {
divisor = 0;
for(int j = 1; j <= i; j++) {
if(i % j == 0) {
divisor++;
}
}
if(divisor == 2) {
%>
<%=i%><br>
<%
}
}
// 処理終了時間を取得して表示する
long end = new Date().getTime();
%>
end = <%=end%><br>
<!-- 処理時間を算出して表示する -->
elapse = <%=(float)(end - start) / 1000%>秒
0807nobodyさん
2005/12/27(火) 01:12:05ID:???単純に考えて、演算パフォーマンスを見ればJAVA(バイトコードをキャッシュするから当然と言えば当然)なのですが、PHPの開発効率も捨て難いです。
そこで、アクセラレータの機能を実感してみたいのですが、手元に10台あったPCが全部取り押さえされて
しまって無くなってしまいました。唯一あるのがこのWinXPなのです。どなたかFreeBSDでのアクセラレータの
速度を計ってもらえないでしょうか?WinXPにはionCube PHP Acceleratorが無いのです。
長くなってしまいましたがよろしくお願い致します。
ちなみに上記素数演算のソースはWEBからパクッてきたものです。
0808nobodyさん
2005/12/27(火) 01:23:40ID:???何があったんだw
0812nobodyさん
2005/12/27(火) 01:50:52ID:???0813807
2005/12/27(火) 01:50:57ID:???0814nobodyさん
2005/12/27(火) 02:02:31ID:???<?php
$start = microtime(true);
$pn = array(2);
for ($i = 3; $i < 5000; $i +=2) {
foreach ($pn as $n) {
if ($i % $n == 0) {
continue 2;
}
}
$pn[] = $i;
}
$end = microtime(true);
echo implode("\n", $pn), "\n";
printf("%d prime numbers found.\n", count($pn));
printf("%0.6fsec.\n", $end - $start);
?>
microtime(true) は PHP5 限定な。
0815807
2005/12/27(火) 02:18:44ID:???WEBから何も考えずパクッただけだったので申し訳ない。
>>814のロジックにしたらPHPでも0.4秒まで短縮できた。
あぁ情けない俺。ロジックで躓くなんて。。
0818nobodyさん
2005/12/27(火) 10:50:07ID:hzIZknsD利用しているサーバーはGDライブラリでJPEGをサポートしていないようです。
gd
GD Support enabled
GD Version bundled (2.0.28 compatible)
GIF Read Support enabled
GIF Create Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
これをJPEGも使えるように自分でGDライブラリをインストールする事は出来ますか?
やはりサーバー管理者にお願いするしかないのでしょうか
0820nobodyさん
2005/12/27(火) 10:53:36ID:???http://sugachan.dip.jp/
これ使え
0821nobodyさん
2005/12/27(火) 12:39:05ID:???0823818
2005/12/27(火) 13:44:39ID:???ダメみたいですね。対応検討中とか言われた。
お騒がせしまして申し訳ありませんでした。
0824nobodyさん
2005/12/27(火) 18:52:39ID:???利点しかないだろうに
0827nobodyさん
2005/12/28(水) 00:08:12ID:???あと訴訟対策も有るんじゃね?
0828nobodyさん
2005/12/28(水) 00:34:59ID:???0829nobodyさん
2005/12/28(水) 00:53:05ID:???PHPでタグのセレクトボックスから選んだものを変数に格納して
それを使用したいのですが,選択した瞬間,そのセレクトボックスのフレームを読み込んで
してしまい,選んだものを初期化してしまいます。
選択したものの値を保持したいのですがどうしたらいいでしょうか?
ヒントなり頂ければ幸いです。
0830nobodyさん
2005/12/28(水) 00:56:01ID:??????
セレクトボックスのプルダウンから何か選んだ瞬間に読み込みが起きる?
HTMLの書き方そのものが間違ってない?
0831nobodyさん
2005/12/28(水) 02:15:39ID:???とりあえずヒント
<?
$no = $_REQUEST["selbox"];
?>
<html><body>
<form action="<?=$_SERVER["PHP_SELF"]?>">
<select name="selbox">
<option value="1"<?=($no==1)?" selected":""?>>1</option>
<option value="2"<?=($no==2)?" selected":""?>>2</option>
<option value="3"<?=($no==3)?" selected":""?>>3</option>
</select>
<input type=submit value="送信">
</form>
</body></html>
0832nobodyさん
2005/12/28(水) 07:26:24ID:???0833829
2005/12/28(水) 08:26:53ID:???曖昧で小出しな聞き方でスマソ。
PHPからのHTMLタグでセレクトボックスの中身を指定しているのでおっしゃるとうりだと思います。
やってみます。
0834nobodyさん
2005/12/28(水) 09:50:13ID:OPhVlmGDのdiscover_tbのように対象urlからtrackback:pingを抜き出す関数を
提供しているライブラリをご存知の方いらっしゃいませんか?
blog提供側の問題で
変な方言や提供方法がありそうで在りものが在れば使いたいのですが・・・
0835nobodyさん
2005/12/28(水) 09:54:29ID:???0836nobodyさん
2005/12/28(水) 10:21:40ID:OPhVlmGDどっちでも良いんですが(て自分で作るならどっちでもよくないか・・・)
0839nobodyさん
2005/12/28(水) 12:59:29ID:???FTP経由でファイルを削除したいのですが、
グッドなアイデアはないでしょうか?
ftp_exec()使うしかないですかね・・・
0841839
2005/12/28(水) 13:01:02ID:???0844840
2005/12/28(水) 13:13:30ID:???0845nobodyさん
2005/12/28(水) 14:02:22ID:???http://jp2.php.net/manual/ja/function.ftp-fput.php
で不満なのか?
0846nobodyさん
2005/12/28(水) 18:10:36ID:jQi1GXdbHTMLから生成するスクリプトとかってないですか?
0847nobodyさん
2005/12/28(水) 18:17:03ID:???実行させるグッドアイデアないでしょうか?
0849nobodyさん
2005/12/28(水) 18:31:13ID:???質問の意図を勘違いしてる希ガス
suexec使えば指定ユーザ権限でのコマンド実行ができるのは分かってるが、
それ以外の方法で同様の状態にする方法は無いのか?と問うてるんじゃないの?
0851nobodyさん
2005/12/28(水) 18:44:28ID:???0853nobodyさん
2005/12/28(水) 20:51:30ID:???0856nobodyさん
2005/12/29(木) 00:21:52ID:???0857nobodyさん
2005/12/29(木) 02:10:23ID:???0858nobodyさん
2005/12/29(木) 09:09:32ID:???0859nobodyさん
2005/12/29(木) 10:04:20ID:???PHP 側でその apache2 の機能の利用はまだオススメできないって
話だったはず。
諦めて cgi にして fastcgi とか使ったらいいんじゃねーのと思うけど、
自分で試したことない。
0860nobodyさん
2005/12/29(木) 11:35:54ID:???0861nobodyさん
2005/12/29(木) 12:18:37ID:???ユーザの数だけphpのfastcgiインスタンスを走らせておくというのも
なんだかかっこわるいなぁ。
しかもsetuidされたラッパプログラムを自前で用意する羽目になるし、
なんかやだ。
0862nobodyさん
2005/12/29(木) 12:53:42ID:???0863nobodyさん
2005/12/29(木) 18:08:20ID:???apacheは独自modでスルーさせるだけ。
0864nobodyさん
2005/12/29(木) 19:20:49ID:???0865nobodyさん
2005/12/29(木) 19:23:06ID:???0866nobodyさん
2005/12/29(木) 19:32:53ID:???0867nobodyさん
2005/12/29(木) 21:49:56ID:???必要なやつは金使ってるってだけの話じゃないのか?
0868nobodyさん
2005/12/29(木) 21:59:06ID:???私も前にそれ考えた事あるし
0869nobodyさん
2005/12/29(木) 23:11:14ID:???0870nobodyさん
2005/12/29(木) 23:15:25ID:???個人で使うのみってこと?仕事では使用しないって事なのかね。
仕事だったら、小中規模案件だと圧倒的にPHP、Perlが占めるけど、Java案件以外の中規模案件なんか受注しないポリシーとか?
Java覚えられるなら、PHPなんか結構すぐに覚えられると思うけど、わざわざ捨てる理由が見つからない。
0871nobodyさん
2005/12/29(木) 23:26:04ID:???わざわざ捨ててるって言うか、java使って満足な人が
他の言語に手を出す理由が無いってだけの話でしょ。
逆もそうだし。
0872nobodyさん
2005/12/29(木) 23:45:46ID:???動的にページ生成したければ、占有鯖か自前鯖で弄りたい放題でしょ。
0875nobodyさん
2005/12/30(金) 04:45:27ID:???0876nobodyさん
2005/12/30(金) 05:08:43ID:???毛が生えた素人を大量に安く使い潰せる依頼主だから。
0877nobodyさん
2005/12/30(金) 05:13:54ID:???0878nobodyさん
2005/12/30(金) 10:33:25ID:???0879nobodyさん
2005/12/30(金) 10:44:59ID:???0880nobodyさん
2005/12/30(金) 11:19:27ID:???0882nobodyさん
2005/12/30(金) 11:55:09ID:???0883nobodyさん
2005/12/30(金) 13:24:42ID:0FfWwbS6一応希望通りの動作はしてますが、かなり変ですよね?(;´Д`)
こうしろよみたいなのありましたらご教示よろしくお願いします。
$today = getdate();
if ( $today[year] > $input_year ) { error(); } // 過去はエラー
elseif ( $today[year] < $input_year ) {} // 未来はOK
// 以下同年
elseif ( $today[mon] > $input_month ) { error(); } // 過去はエラー
elseif ( $today[mon] < $input_month ) {} // 未来はOK
// 以下同月
elseif ( $today[mday] > $input_day ) { error(); } // 過去はエラー
// 存在しない日はエラー
if ( !checkdate($input_month, $input_day, $input_year) ) { error(); }
0884nobodyさん
2005/12/30(金) 13:51:27ID:???epoc値(1970/1/1からの秒数)に直して比較すれば一発。
その前に書式はチェックしないといけないけど。
0885nobodyさん
2005/12/30(金) 13:57:28ID:???年/月/日ごとに異なるエラーを出すのでないなら、
まとめてタイムスタンプの大小で現在より過去を判定した方が良いんじゃないか。
タイムスタンプの性質とmktimeの動作を確認して、自分の仕様に適うかどうかだな。
0886nobodyさん
2005/12/30(金) 16:58:33ID:???あと関係ないが連想配列[]内はクォーテーションで囲みましょう。["hoge"]
0887nobodyさん
2005/12/30(金) 18:12:49ID:???それ以外の方法でもあれこれ組み合わせれば結構セキュア
(他の人のスクリプトやデータに干渉しないよう)に
できると思うんだが。
0888nobodyさん
2005/12/30(金) 18:52:17ID:???0889nobodyさん
2005/12/30(金) 20:53:24ID:5CV6IiV6認証部分はどうすればよいのでしょうか?
googleで5時間探したけどわかんね。。
0890nobodyさん
2005/12/30(金) 20:59:33ID:???別に難しく考える必要はなし。
if(date("Ymd") < "{$input_year}{$input_month}{$input_day}"){
echo 'Error!';
exit();
}
※$input_yearは4桁西暦、$input_month $input_dayはあらかじめ2桁に整形済みのこと
0891nobodyさん
2005/12/30(金) 21:05:51ID:???$input_year.$input_month.$input_day){
0893nobodyさん
2005/12/30(金) 21:47:34ID:???$input_monthや$input_dayが一桁だった場合におかしなことになるからsprintf("%04d%02d%02d",ってやらないとまずくない?
>>889
ページってことはHTTPってこと?だったらfsockopenでクッキーとかも送ってやればいいだけ。
HTTPSに関してはOpenSSLを導入する方法があったようななかったような。
あとPearにもHTTPクライアントあるし。もしくはcurl使うとか。
つーかメールだったらIMAP系の関数使ったほうが早いかもね。
0895893
2005/12/30(金) 21:54:30ID:???すまん。ここ読んでなかった。
> ※$input_yearは4桁西暦、$input_month $input_dayはあらかじめ2桁に整形済みのこと
0896nobodyさん
2005/12/30(金) 21:54:46ID:???「あらかじめ整形しておく」などの事前前提は意外とバグを産み易い。
速度的にシビアな場面じゃないのなら安全策を取った方が不慮の事故を防げるかと。
if(date("Ymd") < sprintf("%04d%02d%02d", $input_year, $input_month, $input_day)){
■ このスレッドは過去ログ倉庫に格納されています