【PHP】下らねぇ質問はここに書き込みやがれ 43
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/01(日) 04:21:50ID:VGqlLhlDPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0065nobodyさん
2007/04/02(月) 09:41:31ID:5RNu93m7//$logはログファイル $intervalは更新インターバル
if(file_exists($log)){
//現在時刻 - $logの更新時刻 が更新インターバルより小さかったらそこで終了
if($interval > time() - filemtime($log)){
return;
}
} //if(file_exists($log))
//$logを出力
$handle = fopen($log, 'w');
fwrite($handle, "a");
fclose($handle);
//ここから断続的にファイル読み書き
//ここまで断続的にファイル読み書き
--
こんなの書いた。でもこれ条件満たすときに同時にアクセス来たら同時に実行されちゃうよね。
一つのプロセスでだけこのcronもどき使うにはどうすればいい?
ロック用ファイルでロックして囲うのかな でもどこをどう囲えばいいのかよくわかんないんで教えてください
0066nobodyさん
2007/04/02(月) 11:42:52ID:???にもかかわらず、「同時」を心配して、それをトリガー後の処理で
あれこれ考えるいうロジック自体を再検討すべきでしょう。
0067nobodyさん
2007/04/02(月) 12:09:27ID:???PHPとDBが使える無料レンタルサーバーおしえてください。
0068nobodyさん
2007/04/02(月) 12:15:25ID:???ものすごい勢いで誰かが無料サーバを探してあげるスレ7
http://pc11.2ch.net/test/read.cgi/hosting/1170323123/l50
0070nobodyさん
2007/04/02(月) 13:46:24ID:???PHPではそういった類の最適化はなされてるんでしょうか?
それともループ中で同じ正規表現を使用した場合、毎回解析されるんでしょうか?
0071nobodyさん
2007/04/02(月) 13:48:27ID:???0072nobodyさん
2007/04/02(月) 13:56:47ID:???PHPの文法に正規表現リテラルがないし(インタプリタは正規表現を知らない)、
関数に正規表現文字列を渡す実装だから毎回解析じゃないのかな。
007370
2007/04/02(月) 14:09:15ID:???なるほど、やっぱりそうですよね。
もしかしたら言語側で特別扱いしてる可能性もあるかもなーと思ったんですが。
どうもでした。
0074nobodyさん
2007/04/02(月) 16:31:34ID:???実装を読んでみないとなんとも。読む気は無いけど。
0075nobodyさん
2007/04/02(月) 18:26:46ID:z0wpzeStバッチは一定時間おきにcronで起動。
<form method="post" action="upload.php">
<input type="file" name="fileobj" value="">
<input type="text" name="filename" value="">
<input type="text" name="param" value="1000">
</form>
↑これで受け取り側 upload.php は正常動作確認済み。
で、送信するバッチファイルのサンプル無いかな?
FORMを利用したサンプルはいくつも出てくるんだが。
007775
2007/04/02(月) 19:00:55ID:???ttp://phpdoc.makizou.com/ref.curl.html
このライブラリでいいのかな?
サンキュ。挑戦してみます。
0078nobodyさん
2007/04/02(月) 19:28:36ID:???$aPOST_VARS['fileobj'] ='@'.$file;
$aPOST_VARS['filename'] = $filename;
$uri = 'http://localhost/upload.php';
$ch = curl_init($uri);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $aPOST_VARS);
curl_exec($ch);
0081nobodyさん
2007/04/02(月) 20:31:39ID:???2Byte文字列のファイル名をrenameしなおしたり、
データベースにinsert発行する前にidなんかを振る為に
一旦テンポラリに落とそうと思っています。
http://example.com/upload.html(GUI)
→ http://example.com/temp.php(file受け取り用php)
条件を満たすファイルであれば/tmp/に一旦copy。
ここまではリアルタイム処理で行います。
Linuxのcronコマンドを利用して1時間毎に/tmp/をチェックしにいき、
アップロード対象となるファイルが存在した場合にアイデアを頂いたファイルアップローダを起動させ、
レンタルサーバにアップロードします。
http://example.com/tmp/(画像ファイル)→http://example-2.com/(画像用ディレクトリ)
やりたい事ってのは最終的に格納するサーバの前に、
バックアップの意味を含めてワンクッションおきたいと思ってるんです。
example-2.comにアップロードが成功した画像は
cronで呼び出される別のバッチでexample.com/tmp/からは削除します。
ってな事をやりたいと思うのです。
リアルタイムでアップロードしちゃえれば一番いいんですが、
諸事情でワンクッション置く必要があるので。
0082nobodyさん
2007/04/02(月) 20:40:22ID:???0083nobodyさん
2007/04/02(月) 20:48:22ID:???勉強がてらうpろだ作りたかったのですが、
レンタル鯖の環境的な問題もあってそんな風にした次第です。
0085nobodyさん
2007/04/02(月) 21:09:26ID:???設計的にどうなの?まぁ用途によるけどさ。
YOUレンタル鯖かえちゃいなよ。
0087nobodyさん
2007/04/02(月) 21:14:36ID:???ご忠告ありがとうございます。
将来的にはレンタル鯖借りてリアルタイム処理にしたいと思いますが
今は勉強中って事もあって鯖も友人に無料で使わして貰ってるんで。
それから、用途が仲間内だけで使用予定で
1時間で結果が出せれば用途を満たすんで
とりあえず今のままでよいのです。
0088nobodyさん
2007/04/02(月) 21:17:52ID:???七面倒くさいことをしたいってのは、条件制約があるだろうと考えられるはずなのに
恥ずかしいな。>>85(多分>>82も同一人物)
008985
2007/04/02(月) 21:36:52ID:???0090nobodyさん
2007/04/02(月) 22:09:43ID:???0091nobodyさん
2007/04/02(月) 22:13:45ID:???0092nobodyさん
2007/04/02(月) 22:57:23ID:???一週間苦労してソースからコンパイルに挑戦して挫折した俺様の苦労はどうなるんだよ!
0093nobodyさん
2007/04/02(月) 23:20:37ID:???0094nobodyさん
2007/04/02(月) 23:27:43ID:???0095nobodyさん
2007/04/03(火) 00:00:30ID:???普通にエラーメッセージでない?
$conn->debug = true
ってしてれば実行したクエリから実行したファイルと行から出してくれるし。
文字コードいじったりしないと化けてたりはするけど。
RDBMSによって違うのかな。
個人的には気に入ってるけど、情報が少ないライブラリなんで、
公式マニュアルでなんとかできないならPEARとか当たった方がいいかも。
日本語化されてるのあるけどちと古いんで本家も読まないとだし。
0096nobodyさん
2007/04/03(火) 01:51:48ID:4755nh+Uvar_dump($var);
これの$varを展開する方法ありますか?
0097nobodyさん
2007/04/03(火) 01:52:30ID:???0098nobodyさん
2007/04/03(火) 01:54:50ID:4755nh+Uご教授ください!
0099nobodyさん
2007/04/03(火) 01:58:21ID:???0100nobodyさん
2007/04/03(火) 02:02:11ID:4755nh+U0101nobodyさん
2007/04/03(火) 02:10:50ID:???0103nobodyさん
2007/04/03(火) 02:27:35ID:???全部ここに書いてある。
http://jp.php.net/manual/ja/language.variables.variable.php
斜め読みして「関数やクラスメソッドの内部では出来ないんですか?」とか聞くなよ。
その方法も全部そこに書いてあるから。
010485
2007/04/03(火) 03:39:38ID:???さすがに回答者側の偽者は出ないでくれよ('A`)
>>88
あと俺は>>82じゃないぞ!
82は、超初心者で聞いたことのない言葉(cronやらバッチやら)が出てきて、
勉強がてらどういうことするのか聞きたかっただけだと思う。
0105nobodyさん
2007/04/03(火) 07:16:11ID:???phpファイルにしろよとかいうのはナシで。
無理だよねぇ。
0107nobodyさん
2007/04/03(火) 08:17:58ID:???それがうちのsakuraのサーバだと
AddType application/x-httpd-php .html
でも無理なんよ
0108nobodyさん
2007/04/03(火) 08:23:27ID:ApqIHYc2php-4.3.11-Win32.zipが欲しいのですが
古いバージョンのものは手に入れることはできないのでしょうか?
0111nobodyさん
2007/04/03(火) 08:55:53ID:3FiNTxl4展開というのがイマイチ良くわからないのでが
ttp://jp.php.net/manual/ja/function.extract.php
これのこと?
ついでに質問
日本語を含む文字列で、一文字目が英数記号と数字以外にマッチさせたいんですけど
mb_ereg("^[^!-~]|[^0-9]", $hoge)
とやってみたけどだめみたいです。
pregみたいに'//'はいらないみたいですよね?
[^!-~]単体でうまく動いてない見たいなんですけど、どんな感じに書けばいいのでしょうか?
0112nobodyさん
2007/04/03(火) 09:05:15ID:???/usr/local/bin/php を ~/www 下に php.cgi という名前でコピーする。
.htaccessに以下の設定を追加:
Action my-php /php.cgi
AddHandler my-php .html
php.iniで、"cgi.force_redirect"を off にしないこと。
デフォルトでは on になっているので、わからなければいじらないこと。危険です。
ちなみに、さくらではコンテントネゴシエーションがデフォルトで使えるので
拡張子無しで参照することができる。
0115nobodyさん
2007/04/03(火) 09:56:40ID:L8WULHx8mb_ereg("^[^!-~]|[^0-9]", $hoge)
じゃなくて
mb_ereg("^[^\!-~]", $hoge)
でしょ。
0116111
2007/04/03(火) 10:42:38ID:/c/AyO3Fどっちにしても良く分からないんだけど
mb_ereg_match ("[a-z]+", "asZ")
がtrueを返すのは何ででしょうか?
pregは思ったとおりの挙動をするんだけどなあ
なんか勘違いしてますか?
0118nobodyさん
2007/04/03(火) 11:08:46ID:???カタギのjoomlaか?ヤクザなdrupalか?
でも良く考えたよなぁー オープンソースを占有するなんてさー
タダで日本支部になって価値がが上がれば高く売る。
drupalは成長株だから浸透すればスゴイ価値が付くとおもうよー
GPLだと占有しても刑事事件にならないからねっ
0119nobodyさん
2007/04/03(火) 11:28:18ID:/TnKR6mx$_SERVERのどの変数で判定すればいいのでしょうか?
Proxyについての知識は全くないので仕様とかさっぱりなのですが、
最近掲示板(PHPでできたもの)がProxy経由で荒らされてるので、
Proxy判定するプログラムを組み入れたいと思っています。
0120nobodyさん
2007/04/03(火) 11:50:16ID:???0121nobodyさん
2007/04/03(火) 12:07:54ID:???getHostByAddr($_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR']
これが真になれば逆引きできねーってことになって判定するとか。
0122119
2007/04/03(火) 13:25:08ID:FtC4cK4Mありがとうございます。
教えていただいたものを使ってみたところ、
診断くんで?判定になるProxyでも見事Proxy判定にすることができました。
こんな簡単なスクリプトだとは思っておりませんでした。
まだ取りこぼしているものもあるようなので、
他の方法を探して、それと組み合わせて使うことにします。
0123nobodyさん
2007/04/03(火) 14:11:47ID:???例えば、会員情報の変更phpで、
WHERE句を忘れていて、謝って全会員の情報を変更してしまう、
といったポカミスが発生しやすいあふぉな俺なんですが、
MySQLレベルでこれを防ぐ方法ってないでしょうか。
0124nobodyさん
2007/04/03(火) 14:16:04ID:???勉強ならいいが、公開する気なら・・
0126nobodyさん
2007/04/03(火) 14:34:41ID:???変更する前には必ず
BEGIN;
で、「あっー」ってときは
ROLLBACK;
でいいんじゃね?
0128nobodyさん
2007/04/03(火) 15:18:52ID:???0129nobodyさん
2007/04/03(火) 15:20:50ID:pT0TAH0Vecho $row["comment"];
のような形では出力できないんでしょうか?
0130129
2007/04/03(火) 15:33:12ID:???0132虚弱PHP
2007/04/03(火) 16:15:10ID:???常にスクリプトを通してDBいじるしかないんじゃ。
スクリプトではWHERE句が付いてなかったらNGとか。
UPDATEには必ずLIMIT句つけるとか。
でも、これだと逆に問題の発覚が遅れる恐れ有り。
0133nobodyさん
2007/04/03(火) 16:26:24ID:???0135nobodyさん
2007/04/03(火) 16:38:45ID:???例えば複数のデータをinsertする場合、全件のデータをDAOに渡してDAOの中でループさせてクエリを発行しますか?
もしくはロジック側でループさせて最小単位まで分割し、1行ごとにDAOを実行しますか?
またDAOのメソッドは一つの機能に特化して実装すべきですか?それとも汎用性を持たせるべきですか?
where句やorder句などをDAOメソッド内で記述してその条件のみ取得させるか、
ロジックからDAOへ引数としてそれらを渡す形にして他の場所でも使えるようにするかで迷っています。
0137nobodyさん
2007/04/03(火) 16:51:20ID:???おれはデバックはprintにしてメインはecho
0138nobodyさん
2007/04/03(火) 16:52:11ID:UEWlkpj30141nobodyさん
2007/04/03(火) 17:49:25ID:???DAOのベースになるクラスで汎用的なメソッドを実装して
各モデル毎のDAOで必要になる固有のメソッドを
ベースクラスの汎用的なメソッドを使いつつ実装していけばいいんじゃない?
機能に特化したメソッドにするかしないかは
機能次第で使いまわすケースが多ければ
引数である程度自由度を持たせるとか
その例だと複数のデータをinsertする箇所がたくさんあるなら
それのためだけのメソッドを用意して、そうでなければ
ビジネスロジック側でループさせてもいいんじゃない?
0144nobodyさん
2007/04/03(火) 19:11:46ID:UEWlkpj3Flex
0146nobodyさん
2007/04/03(火) 19:18:30ID:???0148nobodyさん
2007/04/03(火) 20:14:32ID:???ハゲてるだろ?
上記ログが連なったログの一行を削除して
再度番号を振り、配列しなおす場合具体的にどのような
プログラムになるのでしょうか?
0153nobodyさん
2007/04/03(火) 20:36:43ID:???echoに括弧を付けてはいけない。
echo $hoge,$hoge * 1000,number_format($hoge);
ドット演算子だと
echo $hoge.($hoge * 1000).number_format($hoge);
こうしないといけないし内部的に結合してやる必要性はないと思う。
0154nobodyさん
2007/04/03(火) 21:05:30ID:???デバックのときくらいしか使わないかな〜
0155111
2007/04/03(火) 21:08:25ID:3FiNTxl4>>117
レスサンクス
var_dump ( mb_ereg ( $pattern, $hoge ,$c ) ) ;
var_dump ( $c ) ;
ってやったら、なんでtrueが帰るのか解りました。
"^[^!-`].*}$"
こんな感じかな?
自分のかきこ良く見ると英数記号とあるけど、半角記号と数字以外の間違いでした。
だから、範囲の指定もこんな感じかな。
>>115
ちなみに[]の中はエスケープ不要みたいですよ。
0156nobodyさん
2007/04/03(火) 21:09:39ID:???俺様に恥をかかせるのか!
0158nobodyさん
2007/04/03(火) 21:20:05ID:???これを使うために、いちいちすべてのファイルでrequire_onceするのが面倒なんですが、
何かいい方法はありませんか?
0160nobodyさん
2007/04/03(火) 21:28:58ID:???└─┘
おらっしゃあぁぁ!!!
∩∧ ∧
ヽ( ゚Д゚)
\⊂\
O-、 )〜
∪
0161nobodyさん
2007/04/03(火) 21:33:47ID:???意味不明なんだが・・・
0162nobodyさん
2007/04/03(火) 21:40:10ID:???php.ini auto_prepend_file
・PHPで書く
・問答無用で一番最初に読み込まれる
php extensionとしてphpの関数に含める
・Cで書く
■ このスレッドは過去ログ倉庫に格納されています