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

【PHP】下らねぇ質問はID出して書き込みやがれ 113

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/11/29(火) 19:55:27.17ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 112
http://hibari.2ch.net/test/read.cgi/php/1320005469/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0015nobodyさん2011/11/30(水) 20:05:19.23ID:???
>>13
ものすごく初歩的ですので、PHPを使う必要はないと思います。
以下のコマンドでどうでしょうか

grep 特定の文字列 > 出力ファイル.html
0016nobodyさん2011/11/30(水) 20:06:34.47ID:???
ごめんなさい
grep 特定の文字列 CSVファイル.csv > 出力ファイル.html
の間違いでした。
0017nobodyさん2011/11/30(水) 20:18:44.92ID:???
>>12
PHPが対応するまでムリです。

>>13
echo join("<br />", preg_grep("/pattern/", file("example.csv")));
0018nobodyさん2011/11/30(水) 20:50:36.50ID:???
>>14>>15>>16>>17
非常に親切な返答をありがとうございます
grepナニソレのレベルなので
まずは自分で調べてみます
お粗末な質問で失礼いたしまた。
0019nobodyさん2011/11/30(水) 21:07:55.47ID:???
>>17
エスパー乙
でも、joinつかうならimplodeで。
0020nobodyさん2011/11/30(水) 22:51:41.16ID:CyKoUyyW
ZOZOTOWNの商品画像ってリクエスト時にサムネイルを生成しているようなんですが、
これと同じように実装すると、1ページに数十画像表示すると
PHPへのリクエストも数十になって、その都度サムネイルを生成するのでとても重くなってしまいます。

http://imgc.zozo.jp/goodsimages/2163901/2163901_14_D.jpg?w=500&h=600
これがサンプル画像です
http://imgc.zozo.jp/goodsimages/2163901/2163901_14_D.jpg?w=50
このようにw,hの数字を変えるとその大きさの画像が生成されます。
zozoのコード見なければわからないのは承知ですが、エスパーというか予想して助言くださいませんでしょうか。

最初に自分で思いついた実装が
1度生成されたサムネイルはそのままサーバに保存して、次回同じサイズのものがリクエストされると、
生成せずに保存した画像を静的に取りに行く、というような方法です。
何かもっと良いアイデアがあれば教えてください。
0021nobodyさん2011/11/30(水) 23:34:18.43ID:???
>>20
wの制限は500まで(1000といれても500の画像が返ってくる)
元画像の比率を保ってるのでhは無意味(いらんパラメータ)

・元画像が500*600でw<500の時元画像を縮小して表示している
・レスポンスが遅すぎることから毎回画像を生成している可能性は高い(キャッシュしてる可能性は低い)
0022nobodyさん2011/11/30(水) 23:54:34.74ID:???
>>20
<img width="50" height="60">でいいんじゃない?
0023nobodyさん2011/11/30(水) 23:55:56.82ID:CyKoUyyW
>>21
>・レスポンスが遅すぎることから毎回画像を生成している可能性は高い(キャッシュしてる可能性は低い)
最初は遅いんですが、もう1度同じサイズをリクエストするとすぐ返ってきません?
>>20で予想したように、1度生成したサイズは保存してるんじゃないかなぁと思ってるんですが・・・
0024nobodyさん2011/11/30(水) 23:58:48.04ID:CyKoUyyW
>>22
それだと、元画像分のサイズを全ての画像が読み込まれるので
通信量がものすごいことになりそうです
利用者側からしてもかなり遅くなるかと
0025nobodyさん2011/11/30(水) 23:59:23.36ID:???
>>24
光回線が当たり前の時代にそんなの微々たる問題
0026nobodyさん2011/12/01(木) 00:15:29.49ID:???
昔の2chみたいにCPUより通信量ネックという事情もあるかもしれない。
縮小とキャッシュのとこは、自分で答えが出てるんだからそうすればいいだけ。
0027nobodyさん2011/12/01(木) 00:16:44.84ID:???
>>25
携帯のこととか考えると必ずしもそうとは言えない
0028nobodyさん2011/12/01(木) 00:29:16.50ID:???
だがよく考えて見てほしい
あの狭い画面でPCと同じ画像のページを開くことは考えにくいということを。

普通にリサイズして別途用意するなり
したほうが早いんじゃないかと。

3キャリアの端末もまだまだ大石蔵之介…
0029nobodyさん2011/12/01(木) 00:32:42.87ID:???
>最初は遅いんですが、もう1度同じサイズをリクエストするとすぐ返ってきません?
そらブラウザがキャッシュしてるだけだろjk
サーバ側じゃキャッシュされてないよどうみても
0030nobodyさん2011/12/01(木) 01:27:59.24ID:yrVuSQr5
phpファイルを読み込んで出力するのはrequireだと思うんですが、
phpファイルの部分的に(functionなどでわけられていないもの)使いたい場合どうしたらいいでしょうか?
file関数で配列にいれて、必要な部分だけechoしたら、phpとして動作せずそのままhtmlに吐き出してしまってうまくいきませんでした
0031nobodyさん2011/12/01(木) 01:41:23.65ID:???
>>30
http://jp.php.net/manual/ja/function.eval.php

まぁそんなおかしな使い方はやめたほうがいいと思う
0032nobodyさん2011/12/01(木) 01:46:04.10ID:xxc60IvZ
>>28
必要な画像サイズを洗い出して
その種類分用意するのもありですね
zozoのような方法がメンテの面などでも一番フレキシブルに対応できるので良いんですが・・・

>>29
ブラウザのキャッシュを忘れていました・・!
ただこの時間にリクエストすると待ち時間無しですぐ生成されますね
0033nobodyさん2011/12/01(木) 02:06:06.55ID:???
>>31
どうもです。
やめときます
0034nobodyさん2011/12/01(木) 10:56:09.73ID:a+GODL7E
【OS名】Win7 32-bit
【PHPのバージョン】5.3.8
【連携ソフトウェア】特になし
【質問内容】
NetBeans IDEというのをダウンロードして入れてみました。
各言語版がありますが、英語版だとショートカットの
操作がやりやすいなどの利点はありますか?
0035nobodyさん2011/12/01(木) 11:08:51.39ID:???
http://hibari.2ch.net/test/read.cgi/tech/1273665879/
0036nobodyさん2011/12/01(木) 11:10:40.00ID:a+GODL7E
>>35
ありがとうございます。移動します。
0037nobodyさん2011/12/01(木) 17:48:01.42ID:JnuQSJ9i
ある配列で、A,B,C,D,EがA,B,E,C,Dとかに変わったとき
今、なにがどこの位置に入ったかを知りたいんですが
どうにかして、知る方法ってありますか?

foreachで頭からまわしても、違う場所は取れるけど
A,B,C,D,E → A,B,D,E,CとCを一番下に持ってきたときに
Cが一番下に行ったと判断ができません。

ドラッグ&ドロップで要素をもってきてこの間に入れるみたいなイメージしていただくと
わかりやすいですでしょうか?
A,B,C,D,E → E,A,B,C,D(Eを一番上にもってきた、Aの上にもってきた)
A,B,C,D,E → A,C,D,B,E(BをDとEの間に入れた)

よろしくお願いします。
0038nobodyさん2011/12/01(木) 18:05:14.95ID:???
>>37
単にどれが何番目に入ってるか知るだけなら、はじめに
array("A"=>1,"B"=>2,"C"=>3,"D"=>4,"E"=>5) とか基準配列を作って
変化後の配列の中身をforeachで調べればいい。
結果としてどういうデータが欲しいんだろう?期待する結果データ例が欲しいね。
0039nobodyさん2011/12/01(木) 18:15:02.96ID:JnuQSJ9i
>>38
ありがとうございます。
基準配列と、実行後配列はもってるんですよね。

結果データとしては、この配列の値がココに移動したよってのを
スクリプト内で知りたいんですよ。

iGoogleとかMyYahooとかのでのモジュールをD&Dしたりできますよね。
結果を取得してデータをインサートしてるんですが
その移動の解析用に、どこの位置にあったものがどの位置にいったかをしりたいんですよね。

この説明わかりづらいですかね?w
0040nobodyさん2011/12/01(木) 18:25:00.51ID:???
移動したものだけがほしくって、その操作によって位置をずらされたものはほしくないってことだろうか
0041nobodyさん2011/12/01(木) 18:35:30.45ID:???
>>39
具体例を書けって言ってるのに。
例えばCが三番目から最後に移動したら C => "3-5" みたいなデータが欲しいってこと?
0042nobodyさん2011/12/01(木) 18:38:18.50ID:JnuQSJ9i
>>40
なんどもすいませんw
そうですね。ズレたものが、どの位置に入ったかってだけですが、
ずらされたもの全ても、必要っちゃ必要かもしれません。
そこは、チョット仕様見直します。

今のところの結果としては()内が結果の配列イメージです。
実際はいろんな値が組み合わさっているので、少し違いますが、純粋に直すとこんな感じです。
A,B,C,D,E → E,A,B,C,D(null,E,A)
A,B,C,D,E → A,C,D,B,E(B,E,D)
A,B,C,D,E → B,C,D,E,A(E,A,null)

みたいな感じですかね。

一応、歴は長いんですが、全然閃かなくって・・・
バイトで外注請けおったものなんで、周りに聞きづらくw
もし、スレチでしたら、違う所で聞くようにします。
0043nobodyさん2011/12/01(木) 18:46:48.41ID:???
>>42
考えすぎなのでは。
From:A,B,C,D,E → To:A,B,D,E,C としたら、
何が:最初から見て行って違うところのFromの文字
どこに:上の文字のTo内の位置

カッコ内の配列の意味は分かりませんので無視しました。
0044nobodyさん2011/12/01(木) 18:50:25.39ID:JnuQSJ9i
>>43
確かに考えすぎかもしれませんww
昼過ぎから頭パンク状態ですw

何が動いたかってのが、分からないんですよ。
現状、前と結果の配列だけしか返ってきてないので、
Cが動いたんだけど、その位置調べたら的なことができません。。
そこは、設計ミスか。。。w
0045nobodyさん2011/12/01(木) 18:51:40.91ID:???
>>42
結果の配列がよく分かんないけど、移動したデータとその前後かな?
という前提で、入れ替え操作はJSでやってるとして、
入れ替えたタイミングでJSで前後取得してAjaxで送ればいいんじゃないの。
ただやっぱり値そのものと別に順番の数値データを記録したほうがいいと思うけど。
0046452011/12/01(木) 18:53:30.92ID:???
リロードしてなかった。言いたいことは43とだいたい同じです。
0047nobodyさん2011/12/01(木) 18:54:47.74ID:JnuQSJ9i
>>45
そうですね。移動したデータとその前後です。
ちょっと事情があって、JSの実装が現状できない状態なんですよ。。。スイマセン。
サーバーサイドだけでなんとかできないかなと悩んでいるんです。
0048nobodyさん2011/12/01(木) 18:56:41.74ID:JnuQSJ9i
チョット整理します。
>>43のは、下記の様なEが上に動いた場合、ひっかかってしまうのかなと。
A,B,C,D,E → E,A,B,C,D(null,E,A)

ん。。いいけるか?・・・
0049nobodyさん2011/12/01(木) 19:02:26.68ID:???
みんな配列の意味がわからんといっているのに。
その配列が、ほしいものを表現しているはずで、それの意味がわからない限り、ほしいものを理解できないんよ。

ちなみに歴どのくらいですか。
0050nobodyさん2011/12/01(木) 19:07:25.17ID:???
>>49
(移動後の前のデータ,移動したデータ,移動後の後ろのデータ)
nullは先頭か末尾 でしょ。
順番数値を記録したほうがいいと思うけどねぇ。
0051nobodyさん2011/12/01(木) 19:08:34.14ID:JnuQSJ9i
>>49
配列の意味は、>>45さんの言った通り、移動したデータとその前後です
A,B,C,D,Eがあったとして
先頭にEを移動した場合は、 null , E , A
BとCの間にEを移動した場合は、 B,E,C
Aを一番後ろに持ってきた場合は、E,A,nullという感じです。

歴はサイト作り始めてからだと、10年くらいですかね。
主にC,C++,perl,phpで作ってます。
0052nobodyさん2011/12/01(木) 19:14:29.96ID:c0/6kWvj
データソース取得したデータをスケジュールカレンダーみたいに表示するには
どのようなプログラミング方法が考えられるでしょうか。
データソースを繰り返させて、そのなかでifで 何月の時は、こう 何もなかったら、 こう
とさせるのが、ベターなかんじですか ?

データソース

1月, ほげほげ
1月, なんちゃら
2月, あらあら
3月, おらおら
3月, きゃんきゃん
3月, にゃんにゃん
5月, ぱっぱら
 表示
 ↓
1月
 ほげほげ祭り
 なんちゃら祭り
2月
 あらあら祭り
3月
 おらおら祭り
 きゃんきゃん祭り
 にゃんにゃん祭り
4月
 無し
5月
 ぱっぱら祭り
0053nobodyさん2011/12/01(木) 19:39:23.19ID:JnuQSJ9i
やっぱり、JSで動かしたやつの値を入れてもらったほうがいいですかね。

明日にでもチョット相談もしてみます。
0054nobodyさん2011/12/01(木) 19:43:44.88ID:???
>>48
動いたのがAなのかEなのかチェックできれば終わりだね。
方法はいろいろあるけど、貴方が判断してる方法でやればいいだけ。
0055nobodyさん2011/12/01(木) 19:52:00.67ID:iRQfyLtk
すいません、他のスレに誤爆してました。

OSはcentos5.5
apache2モジュールphp5

nobody権限なんですが、sell_exec()からmysqlを実行したいのです。
セキュリティに問題なく実現する方法はないでしょうか。
0056nobodyさん2011/12/01(木) 19:52:25.19ID:JnuQSJ9i
>>54
配列同士を比べて、どれがどの位置に入ったかって判断するのは
多分可能なんでしょうけど、すごいめんどくさそうですしねw
久しぶりに頭フル回転しました。。。ありがとうございます。
0057nobodyさん2011/12/01(木) 20:46:25.15ID:???
>>51
> A,B,C,D,E → A,C,D,B,E(B,E,D)
は、
A,B,C,D,E → A,C,D,B,E(D,B,E)
だったってことか。
読み取れなくてごめんな
0058nobodyさん2011/12/01(木) 20:49:11.20ID:???
>>56
もしかしてなんだけど、1個しか動かない前提なの?
0059nobodyさん2011/12/01(木) 21:06:04.20ID:???
>>56
ABCEDの場合はEとDのどちらが動いたと判定するの?
0060nobodyさん2011/12/01(木) 21:07:29.47ID:???
読んでないが{元の位置、内容}の配列でいいだろ。
0061nobodyさん2011/12/01(木) 21:09:17.83ID:Uf/kHM0d
>>58
えっと、D&DでJSからのAPIが投げられるので基本ひとつしか動かないです。
まとめても出来なく無いですけど、実装してないですね。
でも、まとめてもありかもw

>>59
あ、なるほど。。。
ABCEDだと、確かにどっちが動いたか判断できないですね。。。orz
だめかwwwwww

トドメをありがとうございます!ww
0062nobodyさん2011/12/01(木) 21:38:08.39ID:???
1個しか動かないんなら、どれが動いたかをhiddenにもっておけばいいような。
どこにってのも、動いた先の前要素(または後要素)のいずれかを持っておけばよいような。
ってやれば結果配列を持つ必要なくね?
0063nobodyさん2011/12/01(木) 21:39:50.86ID:???
あと、どれが動いたのかを知る必要性が今のところ見当たらなくて。
操作履歴みたいなのを保存したいのか、状態の変化を保存したいのかで変わってくるんだけども。
0064nobodyさん2011/12/01(木) 22:02:39.65ID:Uf/kHM0d
>>62,63
いや、hiddenとかHTMLをいじれる状況じゃなかったので
配列2つの比較で、出来るかなぁと思って相談してみたのですが、
>>59でトドメになっただけです。

HTMLをいじれるなら、簡単なことなんで。
複雑なものなので、短絡化して相談しただけです。
0065nobodyさん2011/12/01(木) 22:19:48.63ID:???
APIもいじれない状況なのね。
なんかしんどそうだけどがんばってw
0066nobodyさん2011/12/02(金) 00:17:56.21ID:+5TRrPlW
日本語、改行、タブ文字の混ざった文章を日本語を維持しつつ、一行に変換&復元したいです。

具体的に言うと、json_encode()の様に
\→\\、改行→\n、タブ→\t ・・と変換して与えられた文字を1行のテキストに変換したいです。
json_encode()でいいかと思ったのですが、json_encode()だと日本語が\u3042 の様に変換されてしまいます

\→\\、改行→\n、タブ→\t の変換だけなら自力でやればいいかと思って
$b=str_replace("\\\\",'\\\\',$a);
$b=str_replace("\n",'\n',$b);
の様な処理を書いてみたのですが、どうも上手く変換&復元が出来ません。
特に\\nを復元する時、\\→\を先にやると\\n→\n→改行 となってしまい
\n→改行を先にやると、\\n→\改行 となってしまい
期待している\\n→\nという復元が出来ません。

json_encode()で日本語を\u3042のように変換させない手段、又は\\n→\nが出来る処理。
手段は問いませんので
日本語、改行、タブ文字の混ざった文章を日本語を維持しつつ、一行のテキストに変換&復元する方法を教えて下さい。
0067nobodyさん2011/12/02(金) 00:27:15.22ID:???
>>66
\\nは\\とnなんだから \という文字とnになるのであってそれは 改行ではないよ?
0068nobodyさん2011/12/02(金) 00:31:00.03ID:???
諦めてbase64やjsonやURLエンコード使っとけ。
PHPで希望の変換かけばコストが掛かかってしまう。
それができると既存エンコードよりどの位いいんだよ。
0069nobodyさん2011/12/02(金) 00:36:52.94ID:???
"\\\\"でexplodeして、それぞれの要素でで\n,\tの変換後、"\\"でimplode
0070nobodyさん2011/12/02(金) 00:55:44.16ID:???
>>66
また地味に難しいことやってるな…
変換は
after = "".join(split("\n", before)) みたいに http://codepad.org/JNgpgisa

できても after -> before と戻すのは至難だと思うんだが…
0071nobodyさん2011/12/02(金) 00:57:35.23ID:???

2バイト目が5C等になりうることによる問題
Shift_JISでは、「ソ」「噂」など一部の字の2バイト目に、5C16(Shift_JISでは¥記号、ASCIIなどではバックスラッシュ)を使用している。
Shift_JIS - Wikipedia
0072nobodyさん2011/12/02(金) 02:38:39.13ID:???
>>67
それはわかってそうじゃん
>>69
それでいいと思う
>>70
改行コードを消そうとはしてないようだよ
>>71
それに出くわしてはなさそうだね
0073nobodyさん2011/12/02(金) 02:49:22.79ID:???
>>72
お前誰だよw
0074522011/12/02(金) 08:05:15.26ID:sTn2jPiz
>>52
0075nobodyさん2011/12/02(金) 08:30:20.12ID:???
>>52
何に困ってるのか全くわからん。
0076nobodyさん2011/12/02(金) 12:51:07.78ID:???
PHP覚えたら就職できますか?
44才魔法使いです
0077nobodyさん2011/12/02(金) 13:36:01.28ID:???
>>76
魔法が使えるなら、どこでも就職できると思うんですが
0078nobodyさん2011/12/02(金) 14:50:32.81ID:???
>>52
年間行事の表示方法なんて、PHPと関係ないだろ。好きな様に表示しろよ。
0079nobodyさん2011/12/03(土) 03:28:44.39ID:???
>>76
>>1
0080nobodyさん2011/12/03(土) 09:45:28.38ID:FACCXriu
55ですが、どう足掻いてもセキュリティ上無理っぽいのでwebのphp(nobody)では登録ファイル書くだけにして、予め予約しておくcronでチェックしてdb登録することにしました。
0081nobodyさん2011/12/03(土) 12:29:45.93ID:???
>>80
Mysqlは頻繁に起動したり止めたりするものではないだろうけど
sudo とかでできないの?
0082nobodyさん2011/12/03(土) 15:33:03.81ID:50KGadHw
/** clean a string from the diacritics
function _cleanString($string) {
$diac =
/* A */ chr(192).chr(193).chr(194).chr(195).chr(196).chr(197).
/* a */ chr(224).chr(225).chr(226).chr(227).chr(228).chr(229).
/* O */ chr(210).chr(211).chr(212).chr(213).chr(214).chr(216).
/* o */ chr(242).chr(243).chr(244).chr(245).chr(246).chr(248).
/* E */ chr(200).chr(201).chr(202).chr(203).
/* e */ chr(232).chr(233).chr(234).chr(235).
/* Cc */ chr(199).chr(231).
/* I */ chr(204).chr(205).chr(206).chr(207).
/* i */ chr(236).chr(237).chr(238).chr(239).
/* U */ chr(217).chr(218).chr(219).chr(220).
/* u */ chr(249).chr(250).chr(251).chr(252).
/* yNn */ chr(255).chr(209).chr(241);
return strtolower(strtr($string, $diac, 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn'));
}
}
というのが外国のライブラリの中にあったのですが、何をやっているのか意味が分かりません
最後のAAA〜は何を意味しているのでしょうか?
0083662011/12/03(土) 17:05:05.70ID:???
>>67-71
どうにも難しいみたいですね。
\を\自体と\xの2パターンあるのが難しい理由みたいです。

結局、最初にAAの様なキーを作って
改行→AA1、タブ→AA2・・としました。
もちろん、最初に変換対象の文字にAAは無い事を調べた上で。
全パターンのキーがあってキーの作成が出来なかったら破綻しますけど・・・
0084nobodyさん2011/12/03(土) 17:22:33.21ID:???
>>82
$string 内にあるアクセント付きアルファベット($diac) を
アクセントの無いアルファベット('AAAAAA〜')に strtr して、strtolower してる
0085nobodyさん2011/12/03(土) 17:30:37.82ID:UqIE+ehV

 =& ってどういう意味ですか?
0086nobodyさん2011/12/03(土) 18:18:59.34ID:50KGadHw
>>84
これは自分たちのような日本語を使う場合でも必要な処理でしょうか?
外国だから必要なのかなと思いまして
見たことがなかったので
0087nobodyさん2011/12/03(土) 21:52:27.47ID:AR407ZHO
phpをfastcgiのように、常に起動させる為のコマンドオプションとか
知っていらっしゃる方がいたら教えてほしいです。


0088nobodyさん2011/12/03(土) 21:59:06.19ID:zvnHXPsG
1024サイズのモニタで作成したHPは27インチワイドとかの
モニタではどのように表示されるのでしょうか?
0089nobodyさん2011/12/03(土) 23:36:02.97ID:???
>>88
作り方次第。PHP関係ない

>>87
検索して調べられないなら知らなくていいんだと思う。

>>86
いらない

>>85
http://jp2.php.net/manual/ja/language.references.whatdo.php

>>83
えー
0090662011/12/03(土) 23:53:42.79ID:???
ファイルロックに関してです。
2つのプロセスを走らせて、プロセスAで
$fp=fopen("A.txt","r+");
flock($fp,LOCK_SH);
ftruncate($fp,0);//←ここでファイルサイズが0になる
fseek($fp,0);
fwrite($fp,"あいうえお");
fclose($fp);
と言う処理をusleep(200000);で0.2秒sleepさせながら実行し
もう片方のプロセスBは
$fp=fopen("A.txt","r+");
fgets($fp);
fclose($fp);
という普通のファイル読取処理を0.1秒間隔で実行し、fopenが成功したか、fgetsが成功したかを順次表示させています
clearstatcacheは毎回しています。

プロセスAだけであればあいうえおという文章が書き込まれるのですが
プロセスBを同時に走らせるとプロセスAのfwriteで0が返ってきて書き込みに失敗し、ファイルサイズが0になってしまいます。
この原因も知りたいのですが、ファイルロックについて詳しく知りたいです。

LOCK_SH、LOCK_EXそれぞれの場合、そのロックを行い
別プロセスでfopen、fgets、fclose、filesizeの様なファイルに関係有る処理を行った場合、どうなるのが仕様なのでしょうか。
ロックされているファイルに対してプロセスBでfopenを行った場合、プロセスAでロックが解除されるまでプロセスBは待機されるのかと思ったのですが
そうはなりませんでした。
0091nobodyさん2011/12/03(土) 23:54:04.67ID:???
名前欄は特に関係ないです
0092nobodyさん2011/12/04(日) 00:03:25.67ID:???
>>90
http://php.net/manual/ja/function.flock.php
まず、正しい使い方と注意事項読んでね。

でも、いろいろ検索するとこれじゃ駄目だって分かると思うよ。
0093nobodyさん2011/12/04(日) 00:59:35.07ID:zQYW8hqE
PHPで数式を扱いたいのですが、教えて下さい
例えば、簡単な例で言えば高校数学の組み合わせで出てくるコンビネーション(C)等を表すPHP関数はマニュアルを見てもないようです
他にも、Σや微分・積分など(まぁ、微分・積分は自分は必要はないですが)

これらのような方程式などを扱うためのライブラリとか、アルゴリズムの載ったサイトとかありましたら教えていただきたいのですが

ある数式をPHPで・・・と思ったのですが、その最初の数式の方程式の所で分からなくなりまして
0094nobodyさん2011/12/04(日) 01:15:52.07ID:???
Cなんか、自分で作っても一瞬でしょうに。
ここで聞くなら、その数式を書かなきゃ。
0095nobodyさん2011/12/04(日) 01:45:19.41ID:???
>>94
同意
必要ななのか、CやらPやらの作り方を書くだけでも答えてくれるかもよ
0096nobodyさん2011/12/04(日) 01:48:20.62ID:zQYW8hqE
>>94
まぁ、コンビネーションなどは確かにすぐではありますが、数式の例がパッと浮かびませんでして上記のようなものを適当に書いてみました
すみません

自分のやりたい数式は統計、分析系でしてΣ、条件付確率を多用します
一からそういった数式のアルゴリズムを学習して、何度の高いものに挑戦しようかと思いまして
ライブラリに関しましても、そのまま利用するよりも中身をハックしようと考えていました


単純ベイズとか、ピアソンの相関係数とかやってみたいと思っています
0097nobodyさん2011/12/04(日) 01:50:51.85ID:???
>>92
なるほど、flockはflockにのみ影響を与えるのか。
つかめてきました。ありがとう
0098nobodyさん2011/12/04(日) 01:56:44.95ID:???
>>96
PHPよりCのほうがいろいろ揃ってる気がする
0099nobodyさん2011/12/04(日) 02:39:44.21ID:???
>>83
単に前からなめてけばいいだろ
0100nobodyさん2011/12/04(日) 02:41:43.64ID:???
ぺろぺろ
0101nobodyさん2011/12/04(日) 03:05:45.07ID:UvLgiAdt
【OS名】CentOS
【PHPのバージョン】5.2
Digest認証をしてるディレクトリ内にあるPHPスクリプトから、
同じディレクトリ内のページにfile_get_contentsすると失敗する。
file_get_contentsで認証できませんか?
0102nobodyさん2011/12/04(日) 11:16:41.58ID:ZwuGc3Sg
【OS名】Linux系(詳細不明)
【PHPのバージョン】5.3.5
【連携ソフトウェア】MySQL
【質問内容】
海外サーバ(ローカルタイムは米国西海岸)を使っていて、
MySQLに時刻データ(日本時間)を保存するとき、どの方法がスマートですか?
データ更新時刻を保存します。

1. CURRENT_TIMESTAMPで西海岸時間を保存して、表示で日本時間を作る
2. time()でUNIX時間をINTで保存して、表示で日本時間をつくる
3. 日本時間を作ってDATETIME形式で保存
4. その他

今は3で日本時間を作ってDATETIME形式で保存するように書いてみたのですが、
UNIX時間の方が処理しやすいことが多いかと思います。
DATETIME形式だとSELECTすればそのまま読めるので便利なのは間違いないですが。
皆さんはどのようにしていますか?
0103nobodyさん2011/12/04(日) 14:00:17.69ID:???
>>102
素直にサーバー内の時間変えたら?
0104nobodyさん2011/12/04(日) 14:00:18.40ID:uNIlr6eZ
switch文についてですが、
case 1:
 処理
case 1:
case 2:
 処理
 break;
・・・

の処理で、下の処理を先にしなければならないとき、
case 1:
case 2:
 処理
case 1:
 処理
 break;
・・・

にすると、case2は最後まで条件文をたどることになりますよね?
回避策としては、
case 1:
case 2:
 処理
case 2:
 break;
case 1:
 処理
 break;
・・・

ぐらいしか思い浮かばないのですが、冗長な気もします。
何か良いアドバイスをください。
0105nobodyさん2011/12/04(日) 14:04:59.47ID:???
>>104
???
0106nobodyさん2011/12/04(日) 14:26:45.63ID:ZwuGc3Sg
>>103
MySQLに接続のたびにタイムゾーンを変更する必要があるので、
変更をし忘れると時刻の整合性がとれず、えらいことになるので
それは避けたいところです。
0107nobodyさん2011/12/04(日) 15:25:26.81ID:DlY6x1ss
Y!ニュースのコメ欄を取得したいです。
↓JSON形式?がうまく変換できません、誰か教えて!

<?php

$url = "http://capi1.cpf.yahoo.co.jp/camp/v1/list/?prop=1&uri=http%3A%2F%2Fheadlines.yahoo.co.jp%2Fhl%3Fa%3D20111203-00000051-jij-soci";
$file = file_get_contents($url);
echo json_decode($file);

?>
0108nobodyさん2011/12/04(日) 15:30:49.25ID:???
JSONPみたいだから
先頭の「listhandler(」と末尾の「)」を削ってからjson_decode()に渡してみては?
0109nobodyさん2011/12/04(日) 16:16:27.90ID:DlY6x1ss
>>108 できました!ありがとうございます^^
0110nobodyさん2011/12/04(日) 16:20:58.73ID:f63/zsl+
PDOでの接続に日本語を含むパスは使えませんか。
オープンできないんですが。Windowsです。
0111nobodyさん2011/12/04(日) 16:24:32.79ID:f63/zsl+
こんなのみつけました。読み込み方法はありますか。



ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)
PHPのデータベース・アクセス・ライブラリPDOは、DB接続時の文字エンコーディング指定ができないため、文字エンコーディングの選択によっては、プレースホルダを使っていてもSQLインジェクション脆弱性が発生します。
http://www.tokumaru.org/d/20100701.html


phpファイルはUTF-8で保存して、設置パスに日本語が含まれないように注意(DBファイルが開けない)。
http://www.tumblr.com/tagged/pdo?before=1321315724
0112nobodyさん2011/12/04(日) 16:47:23.36ID:???
>>111
1個目は関係ないよ
0113nobodyさん2011/12/04(日) 17:12:55.32ID:???
>>102
TIMESTAMPもDATEも現地時間で保存なんかしない
タイムゾーンを設定するのはクライアント側の仕事
接続する度に SET time_zone = '+9:00'; なり発行しなさい
01141042011/12/04(日) 17:17:45.05ID:???
PHPだけの話じゃないので他で聞いてきます
スレ汚しすみません
■ このスレッドは過去ログ倉庫に格納されています