【PHP】ID出さんでも質問OKなスレ【初心者歓迎】2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/10(木) 22:52:33ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
姉妹スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
0237nobodyさん
2009/09/25(金) 18:48:53ID:???<?php
if ( ○○==0 ) {
echo "not found";
} else {
?>
<font>TEST</font>
ズラ〜〜っと
<?
}
?>
</html>
0238nobodyさん
2009/09/25(金) 18:52:04ID:???display_errorsが0ってことはエラーが表示されてない設定になってると思うお
php.iniを書き換えればいいお
0239226
2009/09/25(金) 19:08:16ID:JtFu9Epkくだらない質問につきあっていただきありがとうございます。
php.iniを
display_errors = On
error_reporting = E_ALL & ~E_NOTICE
に変更してみましたが、変化は見られませんでした。
変更するところ間違ってるのかな。よく分からなくなってきた。
0242226
2009/09/25(金) 19:32:14ID:JtFu9Epk2回ほど再起動しました。
う〜ん・・・
0243226
2009/09/25(金) 19:34:04ID:JtFu9Epkすいません。
一応サーバごと再起動してみたらうまいこといきました。
ログを見るとどうやらapache様が挙動不審になってたようです。
設定を修正して見れるようになりました。
Webは普通に動いてたのでピンポイントでおかしくなってたようです。
こんなくだらない事にながながとつきあっていただき本当にありがとうございました。
0244sage
2009/09/25(金) 20:36:02ID:???date("Ymd H:i:s.", filemtime($file))
をwihleで回して更新日を取得する事が出来るようにはなったのですが
これをどのようにすればよいのでしょうか?
ヒントをいただけないでしょうか
0245nobodyさん
2009/09/25(金) 20:38:26ID:???その差が、削除したい差以上であれば、削除
てな感じでよくない?
0246nobodyさん
2009/09/25(金) 20:40:26ID:???更新日って一度そのファイルが作成されたら更新はもうされないの?
とりあえず3ヶ月更新なかったものを削除とすると
取得した更新日と現在日時の差で90日分あいていたら
そのファイルにたいしてunlinkかけるとかでいいんでない?
0247sage
2009/09/25(金) 20:43:14ID:???残りの2個は削除したいという意味です。
説明不足申し訳ない。
0248nobodyさん
2009/09/25(金) 20:44:07ID:???てな感じでよくない?
0250sage
2009/09/25(金) 21:18:20ID:???while (false !== ($file = readdir($dir))) {
$filetaime[] = date("Ymd H:i:s.", filemtime($file));
$filetime[] = sort($filetime);
unlink($file[$i]);
というのを思いついたのですが、ファイル名と時間が連動してないですね。
きっとアホなことしてると思われてるんでしょうけど、複数の変数を連動させるような事はできますか?
0251nobodyさん
2009/09/25(金) 21:26:04ID:???0252249
2009/09/25(金) 21:41:52ID:???touch($new_file); //新しいファイルを作成する
file_put_contents("log.txt", $new_file."\n", FILE_APPEND | LOCK_EX); //新しいファイル名をログファイル(log.txt)に追記
$list = file("log.txt"); //ログを配列に読む
$tmp_log = ""; //新しいログ
for ($i = count($list) - 1; $i >= 0; $i--) { //後ろから回す
if ($i > 5) {
unlink($list[$i]); //ファイル削除
} else {
$tmp_log .= $list[$i]."\n";
}
}
file_put_contents("log.txt", $tmp_log, LOCK_EX);
動作確認もしてないし細かいとこが違ってるかもしれんけど
イメージとしてはこんなかんじのことをいった
0253252
2009/09/25(金) 21:48:57ID:???眠くて頭が回らない・・・
0254nobodyさん
2009/09/25(金) 21:49:56ID:???252は忘れてちょうだい・・・
0255nobodyさん
2009/09/25(金) 23:10:04ID:???0-0000-0001-2 ガリの穴 25,000円 山田のおばさん
コレをあなたのデータベースに登録してみて下さい
0256nobodyさん
2009/09/25(金) 23:22:36ID:???0257nobodyさん
2009/09/25(金) 23:26:38ID:xPOnPJfWfopenしてLOCK_EXしてfputsで書いてLOCK_UNしてfloseしてるんだけど
やっぱりfile_put_contents1行で書いたほうがいいものなんかね?
0258nobodyさん
2009/09/25(金) 23:45:05ID:???0261sage
2009/09/26(土) 00:07:25ID:???file_put_contentsでもパイプでLOCK_EXすればいいんじゃないの?
file_put_contents($file, "hogehoge", FILE_APPEND | LOCK_EX);
こんな感じ。
0262nobodyさん
2009/09/26(土) 00:21:08ID:???0263sage
2009/09/26(土) 00:24:43ID:???0264nobodyさん
2009/09/26(土) 00:39:16ID:???> FILE_APPEND | LOCK_EX
これは有効なのか?
マニュアルを見ると、
フラグを組み合わせる際には、論理 OR (|) 演算子で連結します。
FILE_APPENDはLOCK_EX と同時には使用できません。
と読めるのだが...。
「追記はアトミックに行われるためロックは不要」とあるので、
FILE_APPENDの指定だけでログ追記するのに問題はなさそうではあるが。
0265sage
2009/09/26(土) 00:50:03ID:???0266nobodyさん
2009/09/26(土) 01:35:35ID:???アトミック(=不可分の)とあるので、一連の操作が邪魔されることがないということなんだろうね。
マニュアルを信じるならば。
古い版のマニュアルでは、
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
という例が載っているが、
http://bugs.php.net/bug.php?id=49329
で修正されたようだ。
0267sage
2009/09/26(土) 01:40:05ID:???file_put_contentsの1行で済むというわけか。
0268nobodyさん
2009/09/26(土) 01:42:11ID:???0269nobodyさん
2009/09/26(土) 05:54:34ID:???0270nobodyさん
2009/09/26(土) 17:49:56ID:???配列ってシングルクオート入れないと、
正式にはダメみたいだね。
0271nobodyさん
2009/09/26(土) 18:27:03ID:???正式?
0272nobodyさん
2009/09/26(土) 18:36:08ID:???0274nobodyさん
2009/09/26(土) 19:13:58ID:???0275nobodyさん
2009/09/26(土) 19:41:50ID:???0277nobodyさん
2009/09/26(土) 19:48:22ID:???0278nobodyさん
2009/09/26(土) 19:51:12ID:???0280nobodyさん
2009/09/27(日) 00:01:22ID:???定数keyStringを先に探して、なければ文字列'keyString'とみなす。
クオートで囲わなくても動くかもしれないが、それはたまたまだってこと。
>>278はこれを説明している
$anArray[1]
1番の要素。
1は番号であって文字列ではないのでクオートで囲わない。
これで判るかい?
0281nobodyさん
2009/09/27(日) 00:05:28ID:???0283nobodyさん
2009/09/27(日) 00:27:37ID:???意義
1. 順序だてたものの中で順序が到来すること。
0284282
2009/09/27(日) 00:55:21ID:???1番と書いてるんだから最初の要素のつもりだろ、っていう意味かな?
背番号1番=1番目の打者ではない、という説明で判ってもらえるだろうか
0285nobodyさん
2009/09/27(日) 00:58:56ID:???ほのめかすような書き方だと2chでは攻撃されたと思う人が多いから。
0287nobodyさん
2009/09/27(日) 02:44:45ID:???何番目というのはあまり意味が無い。
$ar[2]=2 ;
$ar[0]=0 ;
$ar[1]=1 ;
print_r($ar) ;
結果
Array
(
[2] => 2
[0] => 0
[1] => 1
)
0288nobodyさん
2009/09/27(日) 02:57:34ID:???0290nobodyさん
2009/09/27(日) 08:57:46ID:???0292nobodyさん
2009/09/27(日) 12:17:21ID:???順序が関係ないって上で言ってるのに矛盾してるぞ?
0296nobodyさん
2009/09/27(日) 19:31:27ID:???外れ引いたっぽ・・・orz
0297nobodyさん
2009/09/27(日) 19:38:36ID:???買わないほうがいい
0298nobodyさん
2009/09/27(日) 19:40:51ID:???0299sage
2009/09/28(月) 10:47:22ID:???flock($file, LOCK_EX);
fputs($file, $hoge."\n");
flock($file, LOCK_UN);
fclose($file);
こういうの使い回してるんですが、これってもっとシンプルには出来ないでしょうか?
0300nobodyさん
2009/09/28(月) 11:33:09ID:???コードを単に短くしたいのならfile_put_contents()使えばいい
file_existsやis_readableなどチェック機構を組み込んだ関数を作るのもよい
0301sage
2009/09/28(月) 11:37:10ID:???いちいちfopenとかfcloseしなくてもfile_put_contentsで充分なんじゃないかな
0303sage
2009/09/28(月) 11:52:15ID:???0304nobodyさん
2009/09/28(月) 11:56:28ID:???0305sage
2009/09/28(月) 12:11:34ID:???負荷ツールで負荷かけてもデッドロックが起きる前に別の問題で落ちそうだし
そういう環境作るのってけっこう難しいな
0307sage
2009/09/28(月) 18:54:01ID:???touch("hoge.txt")
とするのはアリですか?
なにか他にクリア方法が思いつかないのですが、代替案とか普通はこうするだろってのがあったら教えてください。
0308nobodyさん
2009/09/28(月) 19:00:13ID:???0309sage
2009/09/28(月) 19:17:12ID:???でもクリア出来るんじゃね?
0310sage
2009/09/28(月) 21:28:13ID:???2000年問題みたいに扱える桁数の制限から使えなくなったり変な値を返したりすることが出てくるでしょうか?
0313sage
2009/09/29(火) 07:46:18ID:???環境はCentOS5.3のPHPは5.1.6です。
検索してみましたが30年近く先の話なので気にしなくてもよさそうですね
>>312
確かに気にしなくてもよさそうです
0314nobodyさん
2009/09/29(火) 10:10:17ID:???まぁそんなにシビアなシステムでないならいいんだが
「2038年にコード使って無いから関係無い」というのは間違い
日付の計算した時に2038年1月19日を超えたらおかしくなる。
2004年にATMで誤動作をおこしたのもコレ(内部で2倍にしていたため)
だからコーディングの仕方、運用の仕方では今すぐ起こる問題。
例えば、開始日・終了日などを設ける場合に、
「終了日は(事実上無期限で)決まってないから3000年にしとけ」とかした場合に
当日が終了日を超えているかどうかチェックしたりするとおかしくなる。
頭の片隅にでも2038年の事は入れておいた方が良いよ
0315nobodyさん
2009/09/29(火) 10:56:12ID:???0316sage
2009/09/29(火) 11:30:05ID:???0317314
2009/09/29(火) 11:35:18ID:???0318nobodyさん
2009/09/29(火) 11:36:40ID:???0319sage
2009/09/29(火) 11:46:08ID:???0320nobodyさん
2009/09/29(火) 11:47:19ID:???他スレでも2038年については何度も話題になってるんだよ
毎度、2038年まで後30年もあるから問題無いっていう本質を理解できていない馬鹿がでてくる
0322nobodyさん
2009/09/29(火) 11:53:56ID:???0323nobodyさん
2009/09/29(火) 11:59:56ID:???お前は何をやってるんだw
wikipediaのアニメーションgifでも眺めてろよ
http://ja.wikipedia.org/wiki/2038%E5%B9%B4%E5%95%8F%E9%A1%8C
0324nobodyさん
2009/09/29(火) 12:29:04ID:???解決策もあるし既に過去スレで回答もでてる
http://phpspot.org/blog/archives/2007/02/php2038.html
0325nobodyさん
2009/09/29(火) 12:33:47ID:???>>321
CentOS使ってるなら64bit版使えば気にしなくていい
0326nobodyさん
2009/09/29(火) 13:17:25ID:???http://www.php.net/manual/ja/book.datetime.php
0327nobodyさん
2009/09/29(火) 13:22:14ID:???0328nobodyさん
2009/09/29(火) 13:24:04ID:???0330nobodyさん
2009/09/29(火) 13:36:12ID:???0332nobodyさん
2009/09/29(火) 14:00:30ID:???0333nobodyさん
2009/09/29(火) 14:11:50ID:???ちゃんと書くと、
RHELをH/Wベンダ経由で800ライセンス買っている
redhatのサポートもH/Wベンダ経由で受けているが、
redhat networkで落とせるパッケージ以外のモノを入れるとサポートが受けられなくなる。
うちは大部分がjavaのシステムだけど、一部phpを使ってる(余談だがpythonも使ってる)
そのphpのためにサポートで揉めるのは勘弁。
スレ汚しスマンかった。
0334nobodyさん
2009/09/29(火) 14:19:54ID:???OSバンドルは5.1みたいなので、みな自分でインストールしてるって事かな?
0335nobodyさん
2009/09/29(火) 14:25:29ID:yA+gFAaj項目例の1行目を非表示(2行目からのデータ部分のみ)にして表示したいのですが
どのように記載すればよいのでしょうか?
for( $i=0 ; $i<count( $data ) ; $i++ ) {
print "$shop[$i],$priceA[$i],価格:$priceB[$i] $place[$i]<br>\n";
}
現在の表示部分はこのような感じです。
初心者な質問ですが
ご教授お願いいたします。
0336nobodyさん
2009/09/29(火) 14:30:25ID:???■ このスレッドは過去ログ倉庫に格納されています