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

【PHP】質問スレッドpart25【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/11/22 17:25:42ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。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
0002nobodyさん04/11/22 17:27:59ID:HPZgqIhK
2
0003304/11/22 17:30:21ID:???
前スレ
【PHP】質問スレッドpart24【php】
http://pc5.2ch.net/test/read.cgi/php/1099249755/l50

関連スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/l50
Pear
http://pc5.2ch.net/test/read.cgi/php/985665522/l50
【PHP】Smarty【Template】
http://pc5.2ch.net/test/read.cgi/php/1047225437/l50
0004404/11/22 17:31:29ID:???
PHP系blogツール part2
http://pc5.2ch.net/test/read.cgi/php/1094725439/l50
PukiWikiスレ Part1
http://pc5.2ch.net/test/read.cgi/php/1084907353/l50
[PHP-users MLヲチ6] 教えていただけませんか?
http://pc5.2ch.net/test/read.cgi/php/1096871691/l50
★負荷軽減対策委員会(Perl、PHP)★
http://pc5.2ch.net/test/read.cgi/php/1034645635/l50
PHPBB
http://pc5.2ch.net/test/read.cgi/php/1065334037/l50
PHPでPDF
http://pc5.2ch.net/test/read.cgi/php/983858078/l50
【PHP】Phrameを使う【フレームワーク】
http://pc5.2ch.net/test/read.cgi/php/1093238107/l50
【PHP】セッションについて語ろう!【PHP】
http://pc5.2ch.net/test/read.cgi/php/1064399467/l50
PHPエディタって、どうよ?
http://pc5.2ch.net/test/read.cgi/php/1079460638/l50
【PHP】自作スクリプト発表会
http://pc5.2ch.net/test/read.cgi/php/1017456911/l50
PHPで2chを真似てこんなモン作ってみますた。
http://pc5.2ch.net/test/read.cgi/php/1019451204/l50
PHP + PostgreSQL
http://pc5.2ch.net/test/read.cgi/php/983128806/l50
PHPで構築されたサイト
http://pc5.2ch.net/test/read.cgi/php/1085302527/l50
親切な人が初心者にPHPの関数を使い方を教える
http://pc5.2ch.net/test/read.cgi/php/1068190843/l50
0005nobodyさん04/11/22 18:00:24ID:???
重複スレ立てちゃうトコだった(;´Д`)
0006nobodyさん04/11/22 19:04:57ID:5v0Qpc9v
PHP4で関数ポインタみたいなのってあります?
コールバック関数を引数で指定したいんですけど。
0007nobodyさん04/11/22 19:22:30ID:???
http://jp2.php.net/manual/ja/function.call-user-func.php
0008nobodyさん04/11/22 19:24:53ID:???
可変関数を使う。
0009nobodyさん04/11/22 19:32:29ID:sWiZ7QKf
substr_count関数なんですが正規表現を使って
カウントすることは出来ないでしょうか?
0010nobodyさん04/11/22 19:44:33ID:???
>>9
count( mb_split("正規表現") ) で返ってきた数値を少し弄る
0011nobodyさん04/11/22 19:49:53ID:???
たいがいにしなさい
0012604/11/22 20:06:41ID:5v0Qpc9v
call_user_func() って、コールバックの関数の引数にリファレンス渡せないのかな?
なんかそんな感じのどうさになっているよう。。。
0013nobodyさん04/11/22 20:12:05ID:???
すんまそん。よろしくです。

例えば"abcdefg.mp3"の文字列から"abcdefg"だけを取り出したいのですが、
どうすれば良いのでしょう。

逆に".mp3"ならばすぐに取り出せるのですが。
echo strstr("abcdefg.mp3",'.')とか・・・

よろしこ
0014nobodyさん04/11/22 20:33:36ID:HopG55j+
2004年11月1日(例)が何曜日か簡単に得る方法はないでしょうか?
0015nobodyさん04/11/22 20:43:14ID:???
>>14
mixed jddayofweek ( int julianday, int mode)

--enable-calendarを指定して PHPをコンパイルする必要があります。
0016nobodyさん04/11/22 21:07:17ID:???
>>1
乙

>>13
そこまで分かっていながらなぜ応用できない?

$str = 'abcdefg.mp3';
echo substr( $str, 0, strpos( $str, '.mp3' ) );

>>14
echo date( 'l', mktime( 0, 0, 0, 11, 1, 2004 ) );
0017nobodyさん04/11/22 21:25:00ID:???
>>13
>>16 の方法以外にも basename() を使う方法もある。
echo basename('abcdefg.mp3', '.mp3');
0018nobodyさん04/11/22 21:36:04ID:???
>>16 >>17
ありがとうございました。
>>16さんの手段で出来ました。
>>17さんの手段も試してみます。

どうもでしたm(_ _)m
0019 ◆.jC7ANgFY. 04/11/22 21:54:09ID:???
>>14
date関数参照
0020nobodyさん04/11/23 00:52:57ID:???
>>14
探偵ナイトスクープに出てきた2050年くらいまで
何年何月何日が何曜日か瞬時にわかる少年に尋ねる。
0021nobodyさん04/11/23 01:24:19ID:HlpT5KHT
クリックされたセルの背景色を変えたいです。
セルにIDを振り、クリックされたら
#cell1{background-color:#000}
と書き足して、URLを例えば「?cell1=yes&cell2=yes...」のようにしたいのですが
セルにIDを振ったところで行き詰ってしまいました。
次々に加えていくにはどうしたらいいでしょうか?
0022nobodyさん04/11/23 01:26:47ID:???
>21
javascriptのが楽チンポ
00232104/11/23 01:30:14ID:???
>>22
URLで状態を再現したいんです。。
0024nobodyさん04/11/23 02:14:11ID:???
hotmail.co.jpの欲しいアカウント取れてうれしかったから書かせてくれ
この喜び誰かに伝えたかっただけなんだ
スレ違いもわかっている
しかし伝えたかったんだ

げっとーーーーーーー
0025nobodyさん04/11/23 09:13:06ID:???
>21
1クリックごとに、セッション変数に登録していくとか・・・・
変数の数を増やしたくなければ、配列にして入れていけばいいだろうし。

?cell1=yes
でリクエストが行ったとして、

<?php
foreach($_REQUEST as $key=>$val){
if($key が "cell"で始まるなら){
if(eregi("yes",$val)){
$_SESSION['cell'][$key]=true;
}else{
$_SESSION['cell'][$key]=false;
}
}
}
?>

<td id="cell1">の部分を、
<td <?php if($_SESSION['cell']['cell1']){ echo 'id="cell1"'; } ?>>

ってのはどう?


あぁ、久々の二日酔いで、気持ち悪。
00262104/11/23 10:38:52ID:HlpT5KHT
>>25
おはようございます。
早速やってみたらうまくできました。ありがとうございました。

あと、もう一度クリックされた時に$keyを削除するにはどうしたら良いでしょうか。
0027nobodyさん04/11/23 10:46:50ID:dbSyw8j5
以下の連想配列の、rslt1の値をとりたいのですが、$a=$_array[rslt1]
でうまくいかない・・・誰か取り方教えて下さい。お願いします。
print_r($_array);

Array
(
[return] => Array
(
[rslt1] => 1
[rslt2] => 2
[rslt3] =>
)

[url] => http://www.foo.com/
)
0028nobodyさん04/11/23 10:54:14ID:???
echo $_array['return']['rslt1'];
00292704/11/23 11:08:06ID:???
>>28
取れました!ありがとうございました。
ただ、$_array[return]['rslt1'];
と、''と省略するとダメなんでつね・・・これも試したんですが、
かなりはまりました。おかげさまで助かりました。
0030nobodyさん04/11/23 11:11:46ID:v88Yo34b
オブジェクトのserializeは、
複雑なオブジェクトでは無理なのでしょうか?
継承を使ったクラスのオブジェクトを
serializeしてechoすると
N;
と表示されました。
単純なクラスを書いてテストすると
ちゃんと中身が表示されました。
いったいどういうことなのでしょうか?
ちなみにPHP5です。
0031nobodyさん04/11/23 11:24:05ID:???
>>29
returnが予約語だから
00323004/11/23 11:39:02ID:???
どうも基底クラスで
__call関数を定義している場合にこのようになるようです。
これはバグですかね?
php5でも、php4のようにプログラミングしておいた方がいいということでしょうか…orz
00333004/11/23 14:38:28ID:???
更に調べていったら
staticなプロパティーのあるオブジェクトも
正常にserialize→unserialize出来ない感じです。
要するにphp5独自の命令はserializeできないと?
このあたり詳しい人いませんか?
0034nobodyさん04/11/23 15:13:00ID:???
>>30
公式に『できないぞ、バグじゃねぇのかゴルァ』と言えばいつか出来る
0035nobodyさん04/11/23 15:29:14ID:???
bugfixをコミットすればさらに早くできる
0036nobodyさん04/11/23 17:59:12ID:fG+RzSBW
<?php

$connect = mysql_connect("localhost", "***", "***");

phpファイルに上のようなID/PASSWORDを書き込んで使用すると
思うんですが、とある京大卒のシステムエンジニアが以前
「web上のプログラムのphpやcgiのコードなんかすぐ見れるんだよ」と
言っていました。
その人の言うことが正しいと、上記のようなコーディングで
ID/PASSWORDが○見えってことなんですが、
マジですか?イマイチ信じがたいんですが。
みなさんはどうやって対処してるんでしょうか?
0037nobodyさん04/11/23 18:29:05ID:???
>>36
そんなこともわかんないんならphpやめろ。カス。
0038nobodyさん04/11/23 19:03:37ID:???
>37
ごめん、どうやるのか教えてください。
例えばログのテキストファイルを拡張子 cgi にしてれば他人に読まれることはない
と思っていたんだけど、だめなんですか? >36みたいな書き方もしてました。
0039nobodyさん04/11/23 19:09:07ID:???
共有鯖の場合、PHPがCGI版でSuExecが有効なら、パーミッションを適切に設定すれば、
鯖の管理者か、ユーザを乗っ取られなければ見られない。

パーミッションを適切に設定しないと、同じ鯖を使ってる人にファイルの中身を覗かれる
可能性がある。
0040nobodyさん04/11/23 19:19:30ID:???
配列$linesの中から$stの要素を含む特定の配列を削除したいんですが
これでいいでしょうか?もっとスマートにできませんかね。ご意見お願いします。

$lines = file($log);
for ($i=0; $i<count($lines); $i++) {
list($r1[$i], $r2[$i],) = explode("<>", $lines[$i]);
}
$result = array_search($st, $r2, true);
if ($result !== FALSE){
unset($lines[$result]);
}
00412504/11/23 20:30:17ID:???
>21,26
もう解決したかな?

?cell1=yes
というパラメータを出力する部分を

$key = cell1;
だとして、

<a href="hoge.php?<php if($_SESSION['cell'][$key]){
 echo $key."=no"; <- yes以外を渡す
}else{
 echo $key."=yes";
}
?>">hoge.php</a>

みたいにすれば、良いんでない?

htmlは汚くなるけどねぇ。
0042nobodyさん04/11/23 20:40:15ID:???
>>40
初心者の回答で申し訳ないが漏れならばこうかな

$i=0;$lines=array();
foreach ( file($log) as $line ) {
 list( $r1, $r2,) = explode("<>", $line);
 if ( $r2 != $st ) { $lines[$i] = $line; $i++; }
}
0043nobodyさん04/11/23 20:43:17ID:???
すみません、PHP_AUTHについて教えて下さい。

PHP Version 4.3.8で、Server APIはCGIです。
さくらインターネット共用鯖を使っています。

http://php.s3.to/man/features.http-auth.html
上記ページには、CGI版では利用出来ないと書かれているBASIC認証ですが、
さくらインターネットのスレッドでこの件が少し前に話題に上っていて、
http://pc5.2ch.net/test/read.cgi/hosting/1100674985/96
辺りからなんですが、普通に使えるそうなんです。
http://pc5.2ch.net/test/read.cgi/hosting/1100674985/119

それで、試したところ、認証画面(IDとPASSを入力するところ)は出るんですが、
いくら正しいIDとパスを入れても認証されません。
試したのは下記のコードです。

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header("WWW-Authenticate: Basic realm=\"My Realm\"");
header("HTTP/1.0 401 Unauthorized");
echo "FAILED\n";
exit;
} else {
echo "<p>こんにちは、{$_SERVER['PHP_AUTH_USER']} さん。</p>";
echo "<p>あなたは、{$_SERVER['PHP_AUTH_PW']} をパスワードとして入力しました。</p>";
exit;
}
?>

ホントは出来ないのに釣られてるとしたら恥ずかしいんですが、
どなたかお力添えお願いします。
00444304/11/23 20:45:08ID:deYy9Umy
ageさせていただきます。
0045nobodyさん04/11/23 21:03:29ID:???
そういうのを一般的に「利用できない」って言うんじゃないの?
逃げ道としてmod_rewriteを使った方法がuser noteに載ってたよ。
0046nobodyさん04/11/23 23:43:52ID:???
>>36
その京大卒のS∃に聞いてみたら?
0047nobodyさん04/11/23 23:50:43ID:???
>>36
共用鯖等で
「見れる場合もある」という事では?
ちゃんと設定してる専鯖なら侵入しないと見れないでしょ。
0048nobodyさん04/11/24 00:53:44ID:TtNOWNs7
ttp://www.stackasterisk.jp/tech/php/php03_06.jsp
ここのsessin_handler.php ってのを流用させてもらってるんですが、
>define(S_RAW_DATA_FIELDNAME, "rawdata");
この書式なんかおかしい?
なんかdefine行のエラーがログに残ってしまうんだけど。
0049nobodyさん04/11/24 01:16:28ID:???
定数名をコーテーションでくくればいいんじゃないんですか?
0050nobodyさん04/11/24 02:43:35ID:???
>>47
結局見れないってことでおーけー?
漏れもつい最近php始めたばかりだから
passとかそのまま書いてあるファイルをアップするのに
すごく抵抗あった。
0051nobodyさん04/11/24 06:05:01ID:???
>>50
PHPの前に日本語勉強した方がいいと思う。
0052nobodyさん04/11/24 06:28:52ID:???
>>50
いろいろ聞く前にそこらに落ちてるスクリプトダウンロードして参考にしてみろよ
0053nobodyさん04/11/24 06:49:34ID:???
まぁ結論としては
仕組みを理解できないやつは
共有サーバでPHP使うなってことでいいじゃん

>>50
見れないんじゃない
見れる場合もあるし見れない場合もある
絶対に見れないなんてサーバごとの設定で変わる
怖いなら自分でサーバ立てて遊べ
0054nobodyさん04/11/24 10:54:03ID:???
変数の中からURLを抽出してハイパーリンク張るってのをググったら以下のようなモノを見つけました。
$txt = "ほげhttp://www.hogehoge.com/hoge.php?hoge=hogehogeうげ";
$html = mbereg_replace('https?://[a-zA-Z0-9.]{2,}(:[0-9]+)?(/[-_.!~*a-zA-
Z0-9;/?:@&=+$,%#]+)?','<a href="\0">\0</a>',$txt);

コレをWindowsのネットワーク参照の場合でもリンク張るようにしたいです。
(\\testsub\_public\テストフォルダ\ という文字列があった場合<a href="\\testsub\_public\テストフォルダ\">\\testsub\_public\テストフォルダ\</a> って結果が得たい)
正規表現とかよーわからんので誰か教えて頂けませんか。
0055nobodyさん04/11/24 11:02:12ID:???
これがいわゆる丸投げというんだよ
0056nobodyさん04/11/24 11:19:31ID:???
>>54
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
http://pc5.2ch.net/test/read.cgi/php/1069245758/

ただし行った先でも同じ扱いされるオチ
0057nobodyさん04/11/24 14:26:34ID:uMAYUbw6
GDモジュールを組み込みたくて、
既に稼動しているサーバーのPHP4.1を
4.3にバージョンアップしたいんですが、
動いているDBやプログラムなどに影響なく上書き可能なものでしょうか?

その際、注意する点など教えてください。
0058nobodyさん04/11/24 14:48:10ID:???
>>57
日本PHPユーザ会のウェブページに各バージョンのチェンジログがあるので(日本語)、
それを確認されたし。影響が出るかどうかは今までのコーディングスタイルによる
ところが大きいので一般論としてどうこうは言えない。
00595704/11/24 14:56:41ID:???
>>58
ご返答ありがとうございます。
早速、確認してみます。
0060 ◆.jC7ANgFY. 04/11/24 17:44:46ID:u2c0bqPj
質問させていただきます。カウンターを設置しているのですが、
ロックもちゃんとできているはずなのにカウンターが崩壊して
しまいました。flockでは不完全なことがあるのでしょうか。
環境はFreeBSD 4.10-RELEASE[i386] + Apache/1.3.29 + PHP/4.3.6です。
アクセスログから得られる当時の状況としては
1秒に30回上がる状況でした。

$log = './counter.dat';
$fn = fopen($log, 'r+');
if (flock($fn, LOCK_EX)) {
$cnt = unserialize(fread($fn, filesize($log)));
define('UNIX_DAY', intval((intval(time() / 3600) + 9) / 24));
if ($cnt['day'] == UNIX_DAY) {
$cnt['tdy']++; $cnt['cnt']++;
} else {
$cnt['day'] = UNIX_DAY; $cnt['yes'] = $cnt['tdy'];
$cnt['tdy'] = 1; $cnt['cnt']++;
}
ftruncate($fn, 0); rewind($fn);
fwrite($fn, serialize($cnt));
}
fclose($fn);
0061nobodyさん04/11/24 18:06:10ID:U8iE6hyF
行き詰まってます。

index.phpに
<?
$hoge="ABCDE";
include("inc.php");
?>

inc.phpに、
<?
echo "$hoge";
?>

index.phpを実行すると
ABCDEと出力されて欲しいんですが、何も出ません。
こういう形でinc.php、に出力処理を書くようなのは、間違った使い方なんでしょうか??
0062nobodyさん04/11/24 18:12:00ID:???
>>61
おかしいね。出力されるはずだけど
http://www.php.net/manual/ja/language.variables.scope.php
0063nobodyさん04/11/24 18:16:25ID:???
>>61
inc.phpの置き場所はどこ?
00646104/11/24 18:46:43ID:rINoz0G+
>63
include("http://hoge.com/inc.php")
という形で、絶対パスで指定しています。

ちなみに、
inc.phpに
<?
$hoge="ABCDE";
echo"hoge";
?>
としてやって、index.phpを実行すると、ABCDEと出力されます。
include自体は成功していて、変数の受け渡しが出来ていないのだ、と思うんですが・・。
0065nobodyさん04/11/24 18:59:16ID:???
>>64
もしそれが動いちゃったらどうなるかよーく考えてみれ
0066nobodyさん04/11/24 19:04:13ID:???
>>64
それ絶対パスとは言わないような・・・俺が間違ってるかな
0067nobodyさん04/11/24 19:46:20ID:T2L7eVOo
質問です

Array([0]=>1[1]=>10[2]=>15[3]=>30[4]=>50)
とformから受け取ったのを、値をカンマ区切りで
$id<>$name<>$mail<>1,10,15,30,50<>
とログに書き出したいのですがどうしたらいいですか?
0068nobodyさん04/11/24 19:51:31ID:???
>>67
ちったぁ自分で考えれ
00696704/11/24 20:02:06ID:T2L7eVOo
すいません追加です。
Arrayに入ってくる値の数はまちまちです。
このまちまちなのをどうしたらいいのかが分かりません。
よろしくお願いします。。
0070nobodyさん04/11/24 20:02:48ID:???
>>67
マニュアルの配列関数を眺めるべし。
http://php.benscom.com/manual/ja/ref.array.php
00717004/11/24 20:04:47ID:???
>>69
配列の値の数を返す関数がある。
それを元に取り出す。
で、基本的に>>70
0072nobodyさん04/11/24 20:18:06ID:iZEscFNu
PHPでワンタイムパスワード(時刻とID)を利用しようと思ってるんですが、サーバAでキーを発行、サーバBで認証する時、時刻はどのサーバで検証するべきなんでしょうか。
一台認証サーバを用意するべきですか?
他に方法があれば教えて下さい。
00736704/11/24 20:25:26ID:T2L7eVOo
implode!!
ありがとうございました!

それで
$id<>$name<>$mail<>1,10,15,30,50<>
$id<>$name<>$mail<>2,12,16,30,60<>
こんな感じになったログから
何番が何回選ばれているかカウントするにはどうしたらいいですか?
0074nobodyさん04/11/24 20:30:27ID:???
>>67
何から何まで人任せでつか
0075nobodyさん04/11/24 21:44:53ID:???
>>73
そこでこれだ。
select number, count(number) from tablename group by number;
0076nobodyさん04/11/24 22:01:24ID:???
>>73
あなたは 趣味でPHPやってるの? それならマニュアルじっくり読むなり、自分でじっくり考えるなり
時間をかけてでも自分でやろうとしろよ。
もし、仕事でやってるなら 転職しろ。
0077nobodyさん04/11/24 22:41:23ID:???
転職ワロタ
00786104/11/24 22:47:07ID:rINoz0G+
>>65,66
ヒントありがとうございます。

include($_SERVER['DOCUMENT_ROOT'].'/inc.php');
で、無事動くようになりました。

他のサーバにあるPHPを勝手に動かす事が出来ないように、こう記述しないとダメ、という理解でいいんでしょうか?
# http://〜って、なんて言ったらいいんでしょうか…
0079nobodyさん04/11/24 23:43:19ID:???
>>60
以前に似たような話で指摘した気がするけど、原因はこの部分。
> ftruncate($fn, 0); rewind($fn);
一時的にでもファイルサイズを 0 にすると、その間に別の httpd のプロセスが
ファイルサイズ 0 のキャッシュを読んでカウンタファイルが壊れる可能性がある。

FreeBSD では試していないけど、Linux でもそれと同じスクリプトを試してみたら、
簡単にカウンタファイルを壊すことができた。flock() は正常でもファイルキャッシュ
とかの関係で壊れることが多い。

とりあえず、Apache 付属の ab でも使って思うので試してみたら?
FreeBSD でも簡単に壊れると思うし、エラーログを見ればエラーが
出力されているはず。コマンドはこんな感じ。
/usr/local/apache/bin/ab -n 1000 -c 5 http://example.com/count.php

Linux で確認したカウンタファイルを壊さないようにするための回避方法だけど、
fopen() の行の前に clearstatcache() を入れておくとファイルサイズ 0 の
キャッシュを読み込んでカウンタを壊すことはなくなった。
または、
ftruncate($fn, 0); rewind($fn);
fwrite($fn, serialize($cnt));
の部分を以下のように修正するというのでも回避可能だった。

rewind($fn);
fwrite($fn, serialize($cnt));
ftruncate($fn, ftell($fn));
FreeBSD で壊れない方法を確認してその方法を採用すれば良いと思う。
0080nobodyさん04/11/25 00:20:10ID:???
QuickFormController 試してみたんだけど、確認画面出すの大変じゃね?
海外では確認画面って概念がないのか?
どうも確認画面のことを考えられてないぽ。
0081 ◆.jC7ANgFY. 04/11/25 00:27:23ID:???
>>79
返信ありがとうございます。当方FreeBSDでは崩壊を確認することはできませんでした。
しかしそのような事例があるのであれば今後、気をつけていこうかと思います。
対策については前者の方法(clearstatcache)でいこうかと思います。
後者の場合はたまたま(桁数はなかなか変わらないので)ファイルサイズが一定
だったために壊れなかったものだと思いますので。一応以下にabの出力概略を。

/usr/local/apache/bin/ab -n 1000 -c 1000 [URL]
Concurrency Level: 1000
Time taken for tests: 6.702 seconds
Complete requests: 1000
Requests per second: 149.21 [#/sec] (mean)
Time per request: 6.70 [ms]

Connnection Times (ms)
min mean[+/-sd] median max
Connect: 2 94 333.5 47 3099
Processing: 124 799 210.5 809 1355
Waiting: 49 799 210.8 808 1354
Total: 124 893 394.3 846 4018
0082nobodyさん04/11/25 01:11:43ID:???
>>81
さっき、FreeBSD 5.2-RELEASE Apache 1.3.31 + PHP 4.3.6 を起動して試したら
clearstatcache() を入れない場合、カウンタファイルは壊れたけど。
FreeBSD 4.x は手元に環境がないので試せない。

一応、もう少し調べて分かったのは、ab はローカルホストに対して実行すると
カウンタファイルは壊れにくい。外部から ab を実行すると壊れるかもしれない。

あと、-c はあまり大きい値にしてもあまり意味はなかったような気がする。

まあ、本当にカウントファイルが壊れないかどうかは flock() の後に
usleep() や sleep() を入れてから ab を実行すれば良い訳だけど。
0083nobodyさん04/11/25 01:30:01ID:???
ディスククォータで容量を制限したアカウントの
ディレクトリの空き容量を調べたいと思って

diskfreespace($path_name);

を使いましたが、ドライブ全体の容量が表示されてしまいます。

ディスククォータにて容量を制限したディレクトリの空き容量だけを
表示する方法は無いものでしょうか?

宜しくお願いします。
0084nobodyさん04/11/25 01:31:27ID:???
レコード毎に、カウント用のフィールドを作って
?id=nnnって感じでgetでそれぞれのレコードの詳細ページを読むだけで
そのレコードののアクセス数をカウントアップ、更新をする、っていうのを作ってずっと動かしてるんですが、壊れません。
f5とかを数人でかましてみましたが、大丈夫っぽいです。
こういうのは、方法として気違いっぽいですか?
0085nobodyさん04/11/25 02:07:41ID:???
>>84
DBMS使ってそれがよろしくやってくれてるんだろ。
コンテンツ毎のカウンタが重要で、さほどコンテンツも
参照されないサイトかな。現状で不満がないならそれで良い。
参照頻度が増えるとその設計はきついけどな。
0086nobodyさん04/11/25 10:45:56ID:???
データをテキストで保存しようと思うのですが、各フィールドのセパレーターとして
<>がよく使われますがその他使いやすい物はありますでしょうか?
0087nobodyさん04/11/25 11:00:49ID:???
>>86
確かに<>は良く見かけるけど何で流行ってるんだろう
何かメリットあるのかなぁ・・・

ちなみに自分はタブを使ってます
0088nobodyさん04/11/25 11:06:23ID:???
データに<>っていう文字列が入ってたらそのエスケープがめどいので私もタブです。
0089nobodyさん04/11/25 11:09:20ID:???
>>87
超既出。
掲示板などで投稿データを保存する前に<を&lt;、>を&gt;に変換する場合、
データに<>が含まれる事が無から。

>>86
データによる。
<>が含まれる可能性があるなら<>区切りは止めた方が良いし、タブが含まれるなら
タブ区切りは止めた方が良い。
0090nobodyさん04/11/25 11:14:04ID:???
>>88
セパレータ<>ってstrip_tags後のデータをログに保存する前提なんじゃない?
多分だけど。

という俺もタブ区切り派。
でも、昔 explode("\t", $line); で空カラム(\t\t\tとかなってるところ)が
うまく読まれなかった経験あり。
最近気にしたことなかったんで気付かなかったけど、
今はそのバグらしきものは再現しない。
0091nobodyさん04/11/25 11:15:13ID:???
レスポンスありがとうございます。
テキストをコピペしてタブが入る可能性があるので、<>にして
<>が入力された場合は<>で置換しようと思います。
色々と意見が聞けて安心しました。ありがとうございました。
0092nobodyさん04/11/25 11:15:14ID:???
>>89
保存前にサニタイジングするのって、一般的じゃないよね。
0093nobodyさん04/11/25 11:16:43ID:???
改行やタブは一般的にエスケープするのが普通と思ってるのでいつもタブ区切りぽ
0094nobodyさん04/11/25 11:18:47ID:???
>>92
掲示板などのデータをテキストで保存するなら保存前にサニタイジングが
当たり前。

改行を<br>に変えないと、1行に保存出来ないし、<br>を変換する前に、
<と>は&lt;と&gt;に変えた方が楽。

負荷的にも、読む度に変換するより、保存時に変換する方が良い。
0095nobodyさん04/11/25 11:18:59ID:???
タブをエスケープするってpreg_replace("/\t/","",$string);という風に消してしまうの?
それとも\\tという風にしてしまうんだろうか・・教えてエロイ人
0096nobodyさん04/11/25 11:20:13ID:???
>>95
俺は半角スペースに置き換えてる。
0097nobodyさん04/11/25 11:23:53ID:???
>>94
なるほどね。最近DBに保存ってのしかしてないから、そこら辺疎い。
データとビューは分離するものと思ってるし。

# 負荷はなんとでもなると思う。
0098nobodyさん04/11/25 11:58:09ID:???
>94
でも、それだとHTML以外への利用がしにくくなるよね。
メールで送るとか、エクセルで一覧表示とか。
だからログはできるかぎりそのままで保存しておきたいと思ってるんだけど。
俺はタブと改行を別文字に置換してタブ区切りで保存してるよ。
0099nobodyさん04/11/25 12:03:59ID:???
>>98
別に<>区切りが多い理由を書いただけで、Excelで利用しようってなら
それなりの方法にすればいいと思うけど。
0100nobodyさん04/11/25 12:04:12ID:???
>>89
んー、俺はメリットを聞きたかったんだがそれは理由だよね。。

セパレータだけで2byte食うしExcelで簡単に開けないし
デメリットの方が多いように感じる
0101nobodyさん04/11/25 12:09:33ID:???
タブだとエディタで開いた時スペースと区別がつきにくいから。

設定変更すりゃいいけどさ。
■ このスレッドは過去ログ倉庫に格納されています