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

【PHP】下らねぇ質問はここに書き込みやがれ 56

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/10/11(木) 17:55:41ID:uObe69hr
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/

◆質問する時の注意
・ sage進行(メール欄にsageと記入すること)「sage進行」とはスレを目立つ上部に上げないことによって、荒らしが発見できないようにすることです
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・ 書き込むときには、「公式マニュアル、リファレンス本は読みました」と明記すること
(でないと、公式マニュアル読めと煽られます)

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
・質問者が「公式マニュアル読んだ」と書いていないからといって、
公式マニュアルに書いてもいないのに、公式マニュアルよめと適当なことを言わないこと。
質問者は公式マニュアルを読んでいるかもしれない。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0052512007/10/12(金) 16:44:40ID:???
すまん。間違った。。

>>50
クラス内のpublicメンバはそのクラスのプロパティになる
ので仕様でつ
0053nobodyさん2007/10/12(金) 16:47:25ID:???
>>50
PHPでのクラスの実装が連想配列みたいな仕組みになってるだけ。
$obj['aaa']がpublic $aaaの実体ってこった。
別にunsetしたきゃしてもいいが、メンバ変数を使えばまた再生成されるし、
メンバ変数に値を格納した状態でunsetしちゃったら値も消えちゃうぞ。
>>51
は?
0054nobodyさん2007/10/12(金) 16:49:58ID:JDHSb9UC
有難うございます
今>>51で頑張って探していたのですが、サッパリでした・・・
コンストラクトで最初にunsetしてから格納してみたところ大丈夫のようでした。
0055nobodyさん2007/10/12(金) 16:52:09ID:???
>>54
それ、大丈夫って言うのか…
0056nobodyさん2007/10/12(金) 16:58:45ID:JDHSb9UC
class GPS {

public $lat;
public $lon;

function __construct ($lat = FALSE, $lon = FALSE)
{
unset($this->lat);
unset($this->lon);

$this->lat = $lat;
$this->lon = $lon;

このような感じで入れ替えてますが、まずいですかね・・・汗
0057nobodyさん2007/10/12(金) 17:07:00ID:???
>>56
まずいというか「全くの無駄」
0058nobodyさん2007/10/12(金) 17:33:51ID:???
>>56
public $lat;
public $lon;
↓
private $lat;
private $lon;
0059nobodyさん2007/10/12(金) 19:16:36ID:???
なんのためにクラス使ってんだ?
0060nobodyさん2007/10/12(金) 23:20:32ID:cR3DAsP9
function HogeHoge(){

   echo Example();
   echo PHP();

   function Example(){

   }

   function PHP(){

   }

}

このようにfunction内のfunctionをfuntionで呼び出すようなことはできないのでしょうか?
すごく簡単な内容なのですが、クラス化したほうが良いのでしょうか。
0061nobodyさん2007/10/12(金) 23:37:49ID:???
>>27>>28
アドバイスを参考に書いてみましたが、結果はNGでした。
試した事は下記です。

httpd.confの記述(一部抜粋)
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
AddType application/x-httpd-php .php .html

/var/www/html/.htaccessの記述
AddType application/x-httpd-php .php

上記の記述では/var/www/html/test.htmlファイルでphpinfoが実行出来てしまいました。
そのため、上記のどこに問題があるか(多分>>27のphp実行不許可の記述の仕方だと思いますが)ご指定いただければと思います。
0062nobodyさん2007/10/13(土) 00:57:16ID:???
>>60
可能
0063nobodyさん2007/10/13(土) 01:23:48ID:???
>>60
function内のfunctionをPHPにおいて呼び出すのはあまり意味がないのでは?
そのfunctionを外に出してもそんなに問題ないでしょう。

>>61
最初に許可しないでディレクトリごとにphpファイルとして解釈するものを加えればいいと思う。
.htaccessは重いので、なるべく使わないに越したことはないのですが。
0064nobodyさん2007/10/13(土) 01:36:04ID:???
関数のスコープ別に取りたいなら意味あるでしょ
無駄にOOでないクラス化するよりよっぽど有用
0065nobodyさん2007/10/13(土) 01:59:08ID:???
ん?オブジェクト指向にならないクラスを書くのは、オブジェクト指向の思想が分かってないからであって、
分かってない人が書いたら、関数内関数も(普通より余計に)スパゲッチーソースになるのでわ?
オブジェクト指向の思想を理解してるなら、素直にクラス化した方がいいと思う。
0066nobodyさん2007/10/13(土) 04:49:24ID:???
>>60
可能だけどfunctionの呼び出しより先に定義しなきゃ。
クラスはインスタンス→中身のメソッド定義全部実行→それからコンストラクタ実行
って順番で動くけど、そのHogeHoge()は頭から順に実行されるんだから。

あと、function内functionも1度定義した時点でグローバルな関数になることさえ
気をつければ別にそういう使い方はありだよ。
0067nobodyさん2007/10/13(土) 04:52:41ID:???
>>63>>65
やってることはぶっちゃけ
if(条件) {
 function a() {処理1}
} else {
 function a() {処理2}
}
にHogeHogeって名前付けてるだけだと思うんだけどね、これ。
そういう意図でやってるなら別にクラス化するほどのもんでもない。
0068nobodyさん2007/10/13(土) 07:28:36ID:JyEmfHgt
質問です。
PEARのXML_Serializerで、連想配列からXMLを出力するとき
一つのノードに複数の属性(Attribute)を設定して、XMLにシリアライズすると
設定した属性が、その属性の名前で昇順に並び変わって出力されてしまうのですが、
これを並び変わらないように設定することは出来ないでしょうか?
自分としては連想配列に代入した順番に出力されて欲しいのですが・・・・・・。

何か良い方法を知っていたら教えてください。

ちなみに環境はWindowsのxampp1.6.4です。
0069682007/10/13(土) 07:42:44ID:???
あー、今気づいたんですが、質問するときのルールがID表示からsage進行になってたんですね
上のレスは思いっきりageてしまいました、すみません。
0070682007/10/13(土) 07:48:20ID:???
書き込んだあとドキュメントをよく読んでみたら該当箇所が見つかりました。
お騒がせしてすみませんでした。
0071nobodyさん2007/10/13(土) 07:54:29ID:???
>>69
あ、ホントだ。いつの間にw
0072682007/10/13(土) 08:17:33ID:JyEmfHgt
>>70は自分では無いです、一応ID表示のためageておきます。

>>70
PEARのドキュメントに質問の答えとなるような項目があるということですか?
一応目を通してみたのですが、まだBeta版だからか、XML_Serializerに関しては完全なオプションのリストに記載すら無かったのですが・・・・・・
ほかに詳細な内容が載っている記事ということで
http://www.sitepoint.com/article/xml-php-pear-xml_serializer
あたりも読んでみたのですが、質問の答えとなるような記述は無かったように思います。
(読み逃しがあったらすみません。)

もし「昇順に並び替えない」という設定が無いまでも、何か良い問題の解消方法を知っている方が居れば
教えていただきたいと思っています。
恥ずかしながら自分では「出力されたXMLを文字列として処理し、該当箇所を全て並び替え」という、
かなり手間のかかりそうな方法くらいしか思いつかないもので・・・・・・

どうかよろしくお願いします。
0073nobodyさん2007/10/13(土) 08:59:16ID:???
ageなくても鳥でも付けたら良いよ
0074nobodyさん2007/10/13(土) 09:34:44ID:???
並び替えない方法があるかどうかは知らないけど、
XMLなんだから、順序に依存するような仕組みではだめだろ。
0075nobodyさん2007/10/13(土) 09:46:33ID:HZ6cGKF0
スレ違い承知で質問します。
xamlスレってないのでしょうか?。
0076nobodyさん2007/10/13(土) 09:57:05ID:???
>>63
フォルダ数が多く1つのフォルダでのみ.htmlでphpの実行を許可しないようにしたい(それ以外のフォルダは.htmlでphpの実行を許可したい)です。

そのため>>26に書いたように、デフォルトでは.htmlでphpの実行を許可し、
特定のフォルダのみ.htmlでphpの実行を許可しないように出来れば一番作業量が少なく楽かなと思ったので質問しました。

最初に許可しないで.htaccessで制御出来る事は確認済みですが、
.htaccessを作らなければいけない量の多さに作業する事を躊躇している所です。
0077nobodyさん2007/10/13(土) 10:29:00ID:???
>>76
検索エンジン用に拡張子を選ぶという話は結構あるけど・・・
何がしたいのかよくわからない

PHPを記述しなければ良いだけのような気がするし第三者にアップロードさせるなら
その時点でチェックすれば良いだけの話

拡張子が同一である限り判別材料は必要でどちらにしても負荷はかかる
0078nobodyさん2007/10/13(土) 11:14:13ID:Vu/tyyyN
見るな↓
http://fanblogs.jp/snrpro/
0079nobodyさん2007/10/13(土) 11:59:23ID:brAyXwH5
DB::connectでクラス内の関数をそのまま呼び出してオブジェクト化していますが、
どうやって、new DB()をしないでオブジェクト化しているのですか?
0080792007/10/13(土) 12:09:56ID:brAyXwH5
$thisがオブジェクトでないときに、オブジェクトを返す方法で自己解決しました。
(果たして解決しているどうかも少しなぞですが)

if(!is_object($this)){

    $obj = new Hoge();

}else{

    $obj = $this;
    unset($this);

}

return $obj;
0081nobodyさん2007/10/13(土) 12:39:21ID:Qhys5rK+
アクセス解析を作りたいと思ってます。
ログはファイルで管理したいと考えているのですが、
今考えてるのはログファイルを一日単位で分けようと考えてるのですが、
セーフモードの場合だとあらかじめファイルを用意しなければならないのがツライです。
ログファイルは一個で管理するのが妥当でしょうか?
0082nobodyさん2007/10/13(土) 13:27:08ID:???
>>81
まぁ、普通は分けるんじゃないの。
何でセーフモードを意識しなきゃいけなくなったのかがちと謎だけど、
日が変わる直前にcronで他のスクリプトとか使ってファイル生成させとけば?
一般に、ログ吐く側は単一ファイルにそのまま吐き続けさせといて
logrotateとか使ってファイル切り替えるもんだと思うけど。
0083nobodyさん2007/10/13(土) 13:42:17ID:???
>>80
四角い車輪の再発明
0084nobodyさん2007/10/13(土) 14:10:59ID:???
>>77
開発環境での話です。
だから負荷は気にしてません

要は同じ階層のフォルダ内に
1. Aフォルダ(.htmlでphp実行可能)、この手のフォルダが複数あり
2. Bフォルダ(.htmlでphp実行不可能)、この手のフォルダは一つのみ
という環境を作りたいのですが、大多数が1に該当する以上、
1をデフォルトの動作とし、例外的な2に対し別途設定を施す事で環境を構築したいと思っています。
0085nobodyさん2007/10/13(土) 14:15:40ID:???
>>76
Apacheのモジュール版PHPでなら簡単にできるよ
動作させたくないディレクトリのhtaccessに
php_flag engine off
と書けば良い


>>80
「デザインパターン シングルトン」
をグーグルさんで検索してみると良い

0086nobodyさん2007/10/13(土) 14:23:25ID:???
>>84
負荷を気にしないならPHP環境下で普通にタグだけ書けば良いでしょ
0087nobodyさん2007/10/13(土) 14:24:32ID:???
>>85
>>>80
>「デザインパターン シングルトン」
前にもあったけど、phpはメモリーを共有できないから、
シングルトンは使えないよ。javaなら大丈夫だけどね。
0088nobodyさん2007/10/13(土) 14:29:19ID:???
共有できるよ
0089nobodyさん2007/10/13(土) 14:30:55ID:???
>>88
お前、ツリー構造の奴だろwww
0090nobodyさん2007/10/13(土) 14:45:50ID:???
phpの場合メモリの共有までは普通考えないと思うんだが
規模のでかさにもよるが・・・

メモリ空間の共有も前ツリー構造の人が
メモリ空間共有用の関数がどれかを書いてたし・・・・
0091nobodyさん2007/10/13(土) 14:47:06ID:???
>>85
試してみましたが駄目でした。
多分モジュール版PHPを使用していないのだと思いますが、
モジュール版が何か分かりませんでした。

>>86
言っている意味が分からないのですが。

開発環境は1つのサーバーで行っています
一方外部公開用のサーバーは複数あります。
そしてそのうち一つのサーバーでは拡張子htmlでphpが使えません。

そのため、開発環境のデフォルトは拡張子htmlでphpを動作可能にし、
特定のフォルダのみ、外部公開用のサーバーの仕様にあわせ拡張子htmlでphpを動作不可能にしたいと思っています。

理由はこれが開発環境の変更点が最も少なく、外部公開用のサーバーにそのまま適用できると思われる為です。
0092nobodyさん2007/10/13(土) 14:56:42ID:???
>>91
> 多分モジュール版PHPを使用していないのだと思いますが、
> モジュール版が何か分かりませんでした。

.htaccessでPHPの設定をできるやつがモジュール版で一般的なPHPのこと。
それ以外はCGI版かコマンドライン版。

しかしengine offにしたら.htmlだけじゃなく.phpでもPHP実行できなくなるような…

> そしてそのうち一つのサーバーでは拡張子htmlでphpが使えません。
環境を実機と可能な限り合わせたい、という意図は分かるんだけど、
あくまで自分の開発環境の話なら、単に.htmlのファイルの中に
PHPコードを入れないだけでもいいんじゃないの?
他のユーザに使わせたくない、って話ならともかく。
それとも、PHPの実行をさせないだけで.html中にPHPコードは埋め込んじゃうの?
0093nobodyさん2007/10/13(土) 15:07:41ID:???
>一方外部公開用のサーバーは複数あります。
>そしてそのうち一つのサーバーでは拡張子htmlでphpが使えません。

中途半端な説明ばかりしているからややこしくなるんだ。
これに尽きるんだろ。

.htaccessが使えるなら.htaccessをトップディレクトリにおいけば良いだけ、
httpd.confが弄れるなら弄れば良いだけ。両方だめなら無理だから諦めろ。
意地でもやるなら拡張子とスクリプトの内容をまとめて書きかえれるような
ソフトを自作して書き換えるしかないだろう。
0094nobodyさん2007/10/13(土) 15:08:18ID:???
>>92
ありがとうございます。
となると私の環境はモジュール版のはずですが、何故phpが動いてしまうんだろう?
それと今回の件だけに限って言えば、そのフォルダでは拡張子php自体使用していないので、
特定のフォルダ直下ではphpが実行できなくなってもかまわないです。

後、本件の目的はミス防止の為です。
他の開発で使用したものを多数流用している為、phpが間違って混入してしまう可能性があるからです。
ご指摘のとおり、入れなければ良いのですが、上記のような過程で間違って入れてしまい、
それを本番に上げて始めて気づいてあわてると言うミスを未然に防ぐ環境を構築したいと思っています。
0095nobodyさん2007/10/13(土) 15:14:22ID:???
>>93
そのレンタルサーバーでは.htaccessが使用不可です。
またhttpd.confは弄れません。

ただし自分の開発環境はhttpd.confも.htaccessも使用可能です。
現状開発環境では、httpd.confで一時的に拡張子htmlでphpが実行出来ないようにし、
拡張子htmlでphpが実行できないといけないフォルダ毎に.htaccessを設置していますが、
可能であれば、httpd.confでは拡張子htmlでphpが実行出来るようにし、
特定のフォルダでのみ.htaccessで拡張子htmlでphpを実行できないようにするのが一番スマートかなと思いました。
0096nobodyさん2007/10/13(土) 15:14:23ID:???
PHPのプログラムでExcelのグラフを呼び出すことってできる?
web上で値を使う人がその都度変えてもいけるようなものが作りたいんだけど…
0097nobodyさん2007/10/13(土) 15:14:27ID:???
>>94
この辺が原因かも。
http://slashdot.jp/~elf2000/journal/105773
> なんてこった…apache2でphp_flagって使えないの?
> php_flag engine off
に対するコメント
> VirtualHostディレクティブ使ってません?
> 使ってたらその中にDirectoryディレクティブを書いてやらないと認識しないようです。
0098nobodyさん2007/10/13(土) 15:17:15ID:???
>>94
htaccess使えるようになってるの?
0099nobodyさん2007/10/13(土) 15:19:22ID:???
>>98
>>95で.htaccessで設定やってるって書いてるよ。
0100nobodyさん2007/10/13(土) 15:20:54ID:???
>>96
Excelの出力形式が
スプレッドシートっていう形式なら可能
0101962007/10/13(土) 15:30:57ID:???
>>100
スプレッドシートだと表じゃなくて円グラフとかのグラフの表示も
PHPの中でできるの?
0102nobodyさん2007/10/13(土) 15:31:23ID:???
開発環境がどうであろうと結局は自分の管理次第。
アクセスしないファイルが紛れ込めばどちらにしろわからない。
0103nobodyさん2007/10/13(土) 15:38:30ID:???
>>96
あ、すまんグラフか・・・・
グラフはGDかなんかで生成してやらんとだめかも
0104nobodyさん2007/10/13(土) 15:42:40ID:???
>>97>>98>>99
レスありがとうございます。

>>85の記述で(一応)思い通りの動作が出来ました。
理由は>>98でした
こちらのミスです。スイマセン。
今環境をいろいろ触っている中で、そのフォルダの.htaccess使えるようにするのを忘れてましたorz

ただ、>>92に記述されているように、engine offにすると.phpでもphpが実行できなくなりました。
今回はこれで大丈夫なのですが、このレンタルサーバーにメールフォームをつけたいとかの要望があると、
このままでは問題があるので、engine off以外の対応法があればそちらを適用してみたいと思います。

>>102
まあそうなんだけど、人間ミスするのは避けられないと思うから、可能性を低くする事だけはしておきたいと思ってね。
0105nobodyさん2007/10/13(土) 15:48:08ID:???
最後だけ偉そうな口調ワラタ
0106nobodyさん2007/10/13(土) 15:51:24ID:???
>>104
.htaccessで特定のフォルダだけphp使用出来るようにすればいいんじぇねぇの・・
0107nobodyさん2007/10/13(土) 15:53:19ID:???
どういう形であれできたのならそれで良いのではないかな。
スレ違いをここまで粘りこむ自分勝手さにこれ以上付き合う事もないだろ。
0108nobodyさん2007/10/13(土) 16:04:07ID:???
>>104
*.phpの時以外はengin offにできるように書けばいいだけだよ
あとはapacheの設定のconfファイルの書き方だからスレ違い
0109nobodyさん2007/10/13(土) 16:14:15ID:c/lxCBKk
PHPでSQLServerに接続ってできるの?
0110nobodyさん2007/10/13(土) 16:15:31ID:Qhys5rK+
>>82
ありがとうございます。いろんなレンタルサーバで動かせるようにしたいと思いまして、
ファイルをわけることにします。
0111nobodyさん2007/10/13(土) 16:17:48ID:???
>>107>>108
すまん、すれ違いだったのね
これ以上の事は別スレ探して聞いてきます。
アドバイスいただいた皆さんどうもです。
0112nobodyさん2007/10/13(土) 16:18:12ID:Qhys5rK+
アクセス解析でモニタの解像度800x600とかそういうのを取得したいのですが、
SSIを使わず、jsで取得したものをPHPに渡したいと思います。
しかし、jsで取得したデータをPHPに渡す方法がわかりません。
どなたかヒントをいただけないでしょうか?
0113nobodyさん2007/10/13(土) 16:20:22ID:???
>>109
普通に可能
>>112
クライアントサイドスクリプト、サーバサイドスクリプト
0114nobodyさん2007/10/13(土) 16:37:23ID:???
>>112
<inpu type=hidden name="diplaysize">
みたいな送信フォームを仕込んどいて、これのvalueをJavaScriptで設定すれば
ページ送信時に現在の画面サイズを拾えるんじゃない?
フォームを使いたくない場合はJavaScriptでcookieに値を格納させて
それをPHPで取得する、って手もある。
0115nobodyさん2007/10/13(土) 16:54:07ID:ZZVUcY03
現在時刻からデーターベースに"Y/M/D H:I:S"という形で登録されている日時が
何分前なのかを取得したいのですが、どのようにしたら出来ますか?
0116962007/10/13(土) 17:10:08ID:???
>>103
なるほど。サンキューとりあえずやってみるわ。
0117nobodyさん2007/10/13(土) 17:18:34ID:???
>>115
タイムスタンプに変換
01181152007/10/13(土) 17:21:38ID:ZZVUcY03
mktime関数で変換しようと思うんですが、Y/M/D H:I:Sの形式から簡単にタイムスタンプに変換できる方法ってないですか?
explode使って配列にする方法しか思い浮かばないんですが・・
0119nobodyさん2007/10/13(土) 17:27:11ID:???
>>115
俺ならSQLで書く
0120nobodyさん2007/10/13(土) 17:29:39ID:???
>>118
strtotime()
0121nobodyさん2007/10/13(土) 17:51:46ID:???
日付時刻関数のところくらい見ろよ・・・・
0122nobodyさん2007/10/13(土) 17:54:19ID:???
どうせ、ヘボいその辺のリファレンス本読みで、
本に載ってませんでしたとかじゃないの?
01231152007/10/13(土) 18:00:17ID:???
>>120
ありがとうございます、出来ました。
>>121-122
リファレスを読んでいませんでした
出直してきます
0124nobodyさん2007/10/13(土) 18:09:22ID:4PtcrD/P
ファイルが破壊されないカウンターでかつ簡単に作りたいのですが、
このようなロジックってどうでしょうか?
ローカルでテストしている分には大丈夫なのですが、
負荷がものすごくかかったときにどうなのかと思ってお聞きしました。
宜しくお願いします。

1. カウント書き込み部分
ユーザーがアクセスしてきたら、fopen($counter_file, "a");で開いて「*」をwriteして閉じる

2. カウンタ取得部分
$counter_fileのファイルサイズを取得して表示する。(byte数がカウント数)
0125nobodyさん2007/10/13(土) 18:15:15ID:???
>>124
斬新だw
面白いんじゃなかろうか。
結構いけるんじゃね?
0126nobodyさん2007/10/13(土) 18:30:04ID:???
>>124
確かに斬新だけど連続リロード対策は無し?
それと結局色々機能付けたくなるんじゃない?
純粋にカウンタだけならいいかもだけどそんな負荷かかるページなのか。
捕らぬ狸の皮算用じゃあ…
0127nobodyさん2007/10/13(土) 18:33:57ID:???
124だとアクセスの度に*増えると思うんですが・・・
0128nobodyさん2007/10/13(土) 18:35:58ID:???
別にそういう仕様のカウンタもアリだとは思うけど。
0129nobodyさん2007/10/13(土) 18:42:50ID:???
ならファイル名でカウンターを作るとかどうよ?
0130nobodyさん2007/10/13(土) 18:42:58ID:???
普通のカウンタでも1日4000程度のアクセスなら問題ない
5000~1万とかいくとファイルに数字しか書いてなくても壊れる

カウント時に*を書いて閉じるというが
アクセスあるたびにファイルサイズでかくなって大変になるな
0131nobodyさん2007/10/13(土) 18:44:51ID:4PtcrD/P
>>125-128
レスありがとうございます。
前は、DBに保存していたんですけど、1日に多い時で数十万PVの日もありまして、
そのような時に、DBのコネクションエラーが発生して困っていました。

htmlをキャッシュしたり工夫しているのですが、カウンターのところはどうしても
リアルタイムで処理しないといけないので、その部分もDBではなくファイルでと考えています。
壊れなければ連続リロードされてもいいです。

又、アクセス1回で1byteしか消費しないので、1日ごとに$counter_fileを変えて、
cronで一日一回、昨日の$counter_fileのサイズを別の集計ファイルに加算した後削除することで、
ディスクサイズを圧迫することなく、かつtotalのアクセス数も計算できるかなぁとも思っています。

最終的に、この追加書き込みのロジックでファイルが壊れないかが一番の心配です。
0132nobodyさん2007/10/13(土) 18:47:38ID:???
でも累計5000万アクセスとかあっても
ファイルサイズは50MBだろ?
でかいっつっても大した問題じゃないんじゃ?
ファイルの中身を読み込むわけでもないし。
その程度のファイルサイズはログファイルでもよく見るぞ。
そんなんで困るほどちっこいHDDでもあるまい。
0133nobodyさん2007/10/13(土) 18:48:24ID:???
>>131
数十万ごときでコネクションエラーってインデックスはれてないとか
別の所に問題ありそうな気がするがな(鯖がしょぼいとか)
0134nobodyさん2007/10/13(土) 18:48:53ID:???
>>131
なあ?ロックってしってるか?
0135nobodyさん2007/10/13(土) 18:49:57ID:???
問題はピーク時の秒間アクセス量だとは思うが。
でもアクセスカウンタごときのためにサーバー増強とかありえねー。
0136nobodyさん2007/10/13(土) 18:51:36ID:???
>>124
最初にカウンター作った時(shellスクリプト)、
やりかたが良く判らなかったのでその方法でやった。"1"の羅列
特にファイルが飛ぶとかなかった(PHPだとどうかな)けど、
ファイル容量が当たり前だが肥大してきて、普通のロックタイプにしてしまった。
定期的に"差分"にすれば良いかもね。でもカウンターとか最近使わなくないか?
0137nobodyさん2007/10/13(土) 19:47:17ID:???
>>131
appendはOSが保証してくれるので安全。
当然ロックは不要。

集計するときは同時に他のが集計を始めないように他にロックファイル作るなりして排他処理をかけ、
まずrename(OS保証の安全な退避法になる)し、fstatのキャッシュをフラッシュしてからやること。

要はapacheログのローテーションと同じだからググれ




0138nobodyさん2007/10/13(土) 20:10:31ID:???
>>130
げっ! そんなに簡単に壊れるものなの?
計算してみたら素人考えだと結構余裕だと思うんだがダメ?
1日4000アクセス: 21.6秒に1回
1日5000アクセス: 17.28秒に1回
1日1万アクセス: 8.64秒に1回

1日数十万PVってスゴイですね>>131
0139nobodyさん2007/10/13(土) 20:14:09ID:???
アクセスが集中する時間ってあるから平均を求めると違和感あるかもね
ファイルロックが確りしてないとF5連打だけで壊れる事がありますよ
0140nobodyさん2007/10/14(日) 01:24:53ID:???
セッション変数で管理して更新時間とかのチェックでひっかかったらカウンタ操作しない
01411302007/10/14(日) 01:27:30ID:???
>>138
うちのサイトは21時〜24時がアクセスの6割ぐらいを占めてる

プログラムあんま知らん頃だったとはいえ
flockとかかけても壊れたな・・・・
0142nobodyさん2007/10/14(日) 01:54:06ID:???
>>141
数字だけでも2〜3秒でダメですか。結構シビアですね。
Cを少し勉強した時シェアード(共有)メモリってのがあったけどPHPでも出来ない?
http://jp2.php.net/manual/ja/ref.shmop.php
ファイル扱うよりいいのかどうか判りませんが。
0143nobodyさん2007/10/14(日) 02:18:24ID:???
memcache
0144nobodyさん2007/10/14(日) 02:25:22ID:???
>>142
それ使えばいいじゃん
0145nobodyさん2007/10/14(日) 02:42:08ID:???
>>124
デブになったらどうすんのさ?
0146nobodyさん2007/10/14(日) 02:51:14ID:TEnpd0OZ
セーフモードが効いてるサーバで
fopen($filename, "a");
でファイルがなかった場合、作成されますか?
UIDがなんたらかんたらとマニュアルに書いてあったので不安です。
winサーバでは問題なく作成されたんですが、linuxではどうなんでしょうか?
0147nobodyさん2007/10/14(日) 03:38:03ID:???
まずそのなんたらかんたらの部分をちゃんと読むことから始めよう
0148nobodyさん2007/10/14(日) 03:54:52ID:zCinDJDY
質問

パスワードをSESSIONで渡してるけどバレちゃいますか?
0149nobodyさん2007/10/14(日) 04:02:37ID:???
セッションは暗号化する訳ではないから
生のパスワードをやりとりしてたら盗聴可能

何のためのセッション変数だw
0150nobodyさん2007/10/14(日) 04:52:42ID:???
問題なのはセッションじゃなくて”生のパスワード”
0151nobodyさん2007/10/14(日) 08:41:50ID:???
誰も生のパスワード渡してるとは言ってない
■ このスレッドは過去ログ倉庫に格納されています