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

【PHP】質問スレッド Part4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/06/02 15:32ID:f3afNVBG
レスは気長に待つのが良い感じかも。


<<参考>>

■本家
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を見よう。
0692nobodyさん02/08/21 21:07ID:???
>>691
そりゃ、PHPはロック処理がPerlよりも甘いんだからなぁ。
日/2万のサイトで、アクセスカウンターをPHPにしたら、日に2回も飛んだもん。
しゃあないからPerlなカウンターに戻した。PHPは確実性、信頼性がない。
0693nobodyさん02/08/21 21:59ID:???
>>692
へーそんなことがあるんだー。
夏厨ですまんのだけど
「飛ぶ」ってのはどうなっちゃうこと?
Webサーバがかたまっちゃうの?
0694nobodyさん02/08/21 22:35ID:???
>>693
カウンタが0に戻る、またはおかしくなったんだろう。
>>692
Perlと比べんなよ。どっちもJSP+Servletと比べたら同じようなもんだ。
0695nobodyさん02/08/22 00:06ID:???
カウンタ読み出して0だったらキャンセルすれば飛ばないよ。
ロックしても飛ぶときは飛ぶ。
0696nobodyさん02/08/22 00:54ID:???
>>692
そんなん MySQL とか BerkleyDB とかをつかえば済むこと。PHP にファイルを
直接いじらせるなよ。
0697nobodyさん02/08/22 01:25ID:???
アクセスカウンターごときでDBを使うのも分からんが、
日/2万のサイトで一つのファイルをロックして読み書きする処理を作るというのも分からんな。
0698nobodyさん02/08/22 01:34ID:???
>>697
鳩山由紀夫っぽいぞ。
で、最善策は?
0699nobodyさん02/08/22 02:18ID:???
最善策なんて個々のサイトによるだろう。
アクセスカウンターが本当にキッチリとカウントしなければいけないのか、
0に戻らなければ多少いいかげんでもいいのか等により違うものだろ。
バックアップファイル作ってもいいし、分散化させてもいいし、その組み合わせでもいい。
0700nobodyさん02/08/22 02:30ID:CUxInLYA
700
0701  02/08/22 02:48ID:cuMMUn2w
http://gatecity.gaiax.com/home/emiko1018/main
初めて先日婦人科検診に行きました。
クリトリスや膣口を念入りに消毒され、先生が指を入れてグニュグニュしてきました。
診察なので別にその時は変な感じはなかったのですが
少し時間が長いかなぁと思っていると、先生の指が微妙にゆっくりと
ピストン運動をしていたのです。
私は恥ずかしいのと気持ちいいのと腹立たしいのとが一緒になり
頭が混乱し、固定されていた足をバタバタ動かしました。
すると先生はすぐに指を抜き「ごめんねぇ、もう少しがまんしてねぇ」
と言いながら、ゼリーのようなものをクリトリスに塗り始めました。
もうその時点で膣口付近は濡れてベトベトだったと思います。
下半身がしびれてしまい、すぐにオナニーをしたいような状況でした。
先生は「ここ痒いでしょ、少しかぶれてるみたいだから薬塗っときますね。」
と言いクリトリスを念入りに指で摘みながら揉んできました。
たしかに最近クリが痒かったので納得したのですが
先生は皮まで剥いて激しく揉んでくるので、私は声を抑えるので必死でした。
かなり濡れているのが自分でもハッキリ分かって、お尻に液が垂れる感じがしたとき
「グボボボボ」と音がして掃除機のようなもので液を看護婦さんが吸い取りました。
自分の状況がとても恥ずかしいと思い「先生、も、もういいです」と言いました。
先生は「はいはい、もうすぐですよ」と淡々と言いながらクリトリスを揉みしだいています。
恥ずかしいので絶対逝ってはいけないとして我慢しました。
やっと診察が終わり、すぐにトイレに駆け込みオナニーをしました。
10秒ほどで逝ってしまいました。
翌日、会社の同僚にこのことを話すと「それ絶対変だよー、そんなことする医者いないよ」
と言われました。あの医者はやはり私で遊んでたのでしょうか、とても悔しいです。

0702nobodyさん02/08/22 06:24ID:???
>>694
だから、PerlとPHPとでは、Perlの方がロック処理がしっかりしてるって事なんだよ。
俺はそれが言いたかっただけ。

>>697
日/2万のサイト程度で音を上げるPHPはダメですなぁ、って事。
PerlとPHPでやってるカウント処理は大体一緒なんだけど、PHPはへぼいですなぁ。

>>699
そこまでやらにゃならんのか。めんどいなぁ、PHPは。
Perlなら日/5万のサイトでも飛ぶ確立はPHPよりも格段に低いってのに。
PHPだったら日に10回は飛びそうだね。

アンケート処理でも、Perlの方が飛びにくいし。
DB処理させる程じゃないけどね。

0703nobodyさん02/08/22 07:04ID:???
>>702

>>701にも何かコメントしてやってくれ。
0704nobodyさん02/08/22 12:07ID:???
>>701
手マン程度で音を上げる女はダメですなぁ、って事。
Perl の方が貞操帯ロック処理がしっかりしてるって事なんだよ。
0705nobodyさん02/08/22 12:18ID:???
>>704
わかってないなー もう♪ 手マンのほうが、って事。
つまりhotscripts.comもPHPのほうがいっちゃったって事なんだよ。
0706nobodyさん02/08/22 16:34ID:???
いちゃってますた
0707nobodyさん02/08/22 17:34ID:???
>>702
どんなロックの仕方してるのかソース見せてよ
0708nobodyさん02/08/22 21:51ID:???
>>701
そんな医者いねえよ(゚д゚)
0709名無しさん02/08/22 22:57ID:???
flockで十分なんじゃないの?
なんか変なロック方法してるとしか思えない。

flockが使えない環境なら別だけど。
0710nobodyさん02/08/22 23:15ID:???
702大人気ですな(藁
0711nobodyさん02/08/22 23:20ID:???
>>704
http://www.hotscripts.com みました
スクリプト数 PHPのほが多いですねえ
はー phpかー
perlまだわかってないし・・・ どうしよ
0712nobodyさん02/08/23 00:09ID:???
>>702
>PerlとPHPでやってるカウント処理は大体一緒なんだけど、PHPはへぼいですなぁ。
って大体一緒じゃなくて全く一緒にして比べろよ(゚д゚)

702大人気ですな(藁
0713TOPEAK ◆2002ISZo 02/08/23 08:14ID:yUIATWhH
1000レス近くついてる2チャンネルのスレッドを
file(thread.at);
とかで読み込むのって
やっぱし負荷大きいですよね・・?
0714TOPEAK ◆2002ISZo 02/08/23 08:34ID:yUIATWhH
あ,2チャンネルは別ファイルにレス数保存してあるのか
なるほど・・・
071566202/08/23 10:33ID:4aUCdNU7
>>714
http://pc.2ch.net/php/subject.txt
別ファイル
0716nobodyさん02/08/23 19:53ID:yUIATWhH
いまだに>>713で悩みながら
スクリプトを書いてるのですが
また質問させてください

指定した行にファイルポインタを移動させようとおもってるのですが
下の関数よりもっと早く,負荷も少なく移動させる方法ってありますでしょうか.

それと下の関数を1つのページで50〜100回ぐらい呼び出すのですが
これってサーバーに対する負荷大きいですか?


//$line_numberで指定した行にファイルポインタを移動させる
function fseek_l($file_pointer,$line_number)
{
rewind($file_pointer);
for($i=0; $i<$line_number-1; $i++) fgets($file_pointer);
}
0717nobodyさん02/08/23 23:12ID:???
>>716
file関数で配列に読み込んでしまえば、そんな関数はいらない。
(ファイルアクセスの)負荷もない。
071871702/08/23 23:14ID:???
と、書いた後にどっちにしようか迷ってるのを知った。
早とちり。スマソ。
071971702/08/23 23:22ID:???
罪滅ぼしに書いておく。
サイズが大きいファイルをfile関数で全て読み込むのが嫌ならば、
freadで自分の好きな単位ずつ読んで、改行検索すれば
716の関数よりはファイル関連の関数を呼ぶ回数は減らすことができる。
ただし、PHPのファイル関数の内部バッファリングがよく分からないので、
効果があるかどうかは別。気持ちだけの問題なのかもしれない。

072071702/08/23 23:28ID:???
で、合わせ技としては、最初にfreadである単位ずつファイルを読み込み、
配列に改行の位置と一行の長さを記憶しておく。
2回目からは、その配列を参照し、fseek→fread
(改行の位置だけ記憶しておき
2回目からは、その配列を参照し、fseek→fgetsでうまくいくかは分かんない)
0721TOPEAK ◆2002ISZo 02/08/23 23:44ID:yUIATWhH
fileがそんなに負荷をかけないならつかってまいたいきもするのですが
ううむ

0722TOPEAK ◆2002ISZo 02/08/23 23:50ID:yUIATWhH
とりあえずfileで完成させてみて
負荷が高いようなら別の方法でがんばってみよう・・
ありがとうございました.


0723nobodyさん02/08/24 10:01ID:???
PHPで、別のサーバーにあるhtmlファイルの取り込む方法(fopenして変数に入れて書き込む)は分かっているんだが、次は
別のサーバーにあるjpg画像を取り込みたいんだが、これってどうやるんだい?
0724nobodyさん02/08/24 11:52ID:???
>>723
fsockopen
0725nobodyさん02/08/24 14:22ID:???
PHP4.2.2にしたとたん、動いてたスクリプトが急に動かなくなりました。
スクリプト内に、print " ";を入れてやるとちゃんとページが表示されるんですが、
それを取るとページが表示できません、となります。
flush();とかやっても意味なかったし、困っています・・・。
0726nobodyさん02/08/24 17:33ID:???
>>725
1から順番に読むべし
0727nobodyさん02/08/24 20:01ID:???
>>723
>>724
fopenでもできるじゃん。
0728nobodyさん02/08/24 20:07ID:???
>>725
php.ini
register_globals = On
072972502/08/24 20:19ID:???
>>5で解決しました。最近phpから離れていたので
ぜんぜん知りませんでした。
php.iniの default_mimetype は text/html になってるんですが、
なんでこのような再定義で回避できちゃうんでしょうか?
0730nobodyさん02/08/25 00:16ID:???
Win+Apache+PHPでやってるんだけど、処理の1つでDOSプログラムを実行しないとダメなんですわ。
これをPHPでやるにはどうすればいいんでしょうか?
実行したいコマンドは e:\utl\ish d:\tmp\hoge.txt /ss です。
0731nobodyさん02/08/25 00:31ID:???
>>730
system関数じゃダメなの?
0732nobodyさん02/08/25 09:23ID:KFiWaIrL
apacheのモジュールとしては組みこめたのですが、
コマンドラインバージョンも組みこもうとしてmakeしたところ、
/usr/local/src/php-4.2.2/main/main.c:966: undefined reference to `php_startup_sapi_content_types'
/usr/local/src/php-4.2.2/main/main.c:968: undefined reference to `zend_register_stringl_constant'
こういうエラーがズラズラーっと出てインストールできませんでした。
4.0.6と4.2.2の両方のバージョンで試しましたが同じ個所でエラーが出ました。
原因がわかる方いらっしゃいますでしょうか?
configureのオプションはこんな感じです。
--enable-mbstring --enable-mbstr-enc-trans --with-pgsql=/usr/local/pgsql
--enable-track-vars --enable-trans-sid --enable-force-cgi-redirect
いろいろ付け足したり取ったりしてやってるんですが、、、
環境は、RedhatLinux7.1、gcc2.96.81、apache1.3.20 です。
0733732の補足02/08/25 09:27ID:???
ソースには手は触れていません。
ソースレベルの間違いではないと思います。
0734nobodyさん02/08/25 10:20ID:???
>>732
Apacheモジュールとしてインストールした後に
make distcleanはもちろんやってるよねぇ?
0735nobodyさん02/08/25 13:40ID:xbmU3xww
$flag=1として、
if($flag) { ~~~ }
if(isset($flag)) { ~~~ }
のどっちが正しいの?どっちもちゃんと動くけど、
わざわざissetって書くのも面倒だし。
前者でいいかな?
0736nobodyさん02/08/25 14:38ID:???
>>735
$flag=1
で、$flag!=0を知りたいだけなら前者で問題ない。
$flag=0
で、$flag=0を知りたいのなら後者でないと識別がつかない。
0737nobodyさん02/08/25 14:50ID:???
PHP+MySqlで列の並び替えをするスクリプト使ってるんですが
一つのファイル、sort.php(86KB)にいろんな形のスクリプを詰め込むか
分散させてsort1.php(10KB)とかで並び替えをさせるか、どっちがいいんでしょうか。
体感的速度はどっちも変わらない(ような気がする)んですが…。
どなたかご教授下さい。
0738nobodyさん02/08/25 14:52ID:???
訂正です。
>一つのファイル、sort.php(86KB)にいろんな形のスクリプを詰め込むか
一つのファイル、sort.php(86KB)にいろんなパターンに並び替えるスクリプトを詰め込むか
0739nobodyさん02/08/25 15:04ID:???
>>735
どちらが正しいかは$flagの扱いによる。
$flagが0または1(0以外)の場合は前者。
$flag自体がある条件の時だけセット(null以外)される場合は後者。
0740nobodyさん02/08/25 15:12ID:???
>>737
どのソートパターンかによって切り替えるのが面倒なので一つのファイルにする
に一票。
クラス化するに一票。
0741nobodyさん02/08/25 16:49ID:XXk1kvRT
>>733
はい、make distcleanは行いました。
エラーメッセージに出てくる定義が入っているヘッダファイルは
ソースを見る限りちゃんとインクルードされてるし、
2つのバージョンで同じエラーが出るというのも解せません。
同じ症状に見舞われた方はいらっしゃらないのかな?
もしかして undefined reference 以前に何かエラーが出てるのかな?
makeのエラーってどこかのファイルにまとめて出力されてましたっけ?
linux(unix)はじめてなうえに、cもほとんど使ったこと無いので
そういう基本的な知識もないのが痛いです。
0742nobodyさん02/08/25 16:49ID:???
掲示板を作っていますが、項目ごとにいちいちmb_convert_encodingするのが面倒です(multipart/form-dataなんです)。
一気にPOSTの内容をエンコーディングするようなことはできるでしょうか?

0743nobodyさん02/08/25 20:27ID:???
>>742
バイナリとか混ざってると出来ないんじゃない?
0744nobodyさん02/08/25 23:35ID:???
>>743
$_POST["title"]=mb_convert_encoding($_POST["title"], "EUC-JP")
とか沢山あるのは何となく嫌なんですよね。仕方がないかなー。
0745nobodyさん02/08/26 15:23ID:???
セッションを使用してサイトを構築していますが
セッションがPHPSESSID経由なのか
クッキー経由なのか判定したいのですがどうすれば出来るでしょうか?
0746nobodyさん02/08/26 15:55ID:???
>>744
key()とnext()を使ってループ処理。
一度作れば、キーが変わっても対応できる。
0747nobodyさん02/08/26 16:04ID:???
>>745
$_POSTや$_GET $_COOKIEにキーPHPSESSIDがあるのかないのか調べれば?
0748nobodyさん02/08/26 18:56ID:???
XOOPSについての質問はここでいいんでしょうか・・・・?
0749nobodyさん02/08/26 19:17ID:ggUoz7FV
PHP+PostgreSQLでスレッド型掲示板を作成しているのですが、
スレッド毎にテーブルを作成してそこにログを入れることの問題点ってありますか?
スレッドは管理者しか立てられませんが、全部で1000以上あります。
0750nobodyさん02/08/26 19:29ID:???
>>749
無駄。大問題。
0751nobodyさん02/08/26 20:14ID:ggUoz7FV
>>750
どこら辺が問題なんですか?
0752nobodyさん02/08/26 20:49ID:???
>>749
問題点は沢山あるけどそれはひとまずおいといて、
実際一つのテーブルに入れてみたら実用に耐えられないほどの
問題が発生したという事なのかな?
まずテーブルを分けようと思うに至った理由を書いてみたら?
0753nobodyさん02/08/26 21:10ID:???
つか、PHPには関係ないな。
こっちで聞いたら?
PostgreSQL
http://pc.2ch.net/test/read.cgi/php/989375812/l50
0754nobodyさん02/08/26 21:36ID:???
で、750は大問題点を答えられないんだな。
0755nobodyさん02/08/26 21:37ID:ggUoz7FV
>>752
1つのカラムに全てログを入れると、ログの追加書き込みがめんどくさいという理由なんですが。
一度全て読み込まなければならないので。
075675002/08/26 21:41ID:???
失礼な。
テーブルは、できるだけ少ない方がイイに決まってる。
同じ構成のテーブルが千件あるだけで大問題だろう。

と言ってみるテスト
0757nobodyさん02/08/26 21:43ID:???
750じゃないが、
そのバラバラのテーブルをどうやって管理すんのよ。
テーブル名を管理するテーブルを作るのか?
訳分からんな。
0758nobodyさん02/08/26 21:46ID:???
>>755
別のレコードに入れて参照させりゃいいだろ。
0759nobodyさん02/08/26 21:58ID:???
>>757
千件もあるスレッドを貴方はどのように管理するのでしょうか?
0760nobodyさん02/08/26 22:01ID:3hDPVfbt
Javaでは
Process java.lang.Runtime.exec (String[] command, String[] envp, File dir)
のように、プログラムを実行する際にプロセスの環境変数を設定する関数があるけど、PHPではそういう関数はないの?
exec ()やproc_open ()を当たってみたけど、それらしい物はないし.
076175702/08/26 22:26ID:???
>>759
スレッド毎にテーブルを作らない方法で。
0762nobodyさん02/08/26 22:41ID:???
>>761
スレッド毎にテーブルを作らない方法で、1000件以上のスレッドをどう管理するの?
076375702/08/26 22:45ID:???
>>762
スレッド毎にレコードを作る方式で。
面白いな(藁
076475702/08/26 22:48ID:???
その後>>758
0765nobodyさん02/08/26 22:52ID:???
>>763
ってことは、スレッドを管理するテーブルは結局作るわけですね。
757を読むと、スレッドを管理するテーブルすら作らなくてもいいよにと
思えたのでした。作らなくてもいいとはどこにも書いてないけどね。

だから確認したの。煽ってスマソ。
076675702/08/26 23:17ID:???
>>765
スレッドを管理するテーブルを作るとは言ってないよ。
スレッド型掲示板っていっても色々あるから、
制限、表示方式等分からないと何とも言えんな。
0767nobodyさん02/08/26 23:31ID:???
>>766
確かに言ってないな。
スレッド毎にテーブルを作るのは論外としても、スレッド管理テーブルと
ログテーブルは別けちゃうよ。
各スレッドのレス数が、多くても数十って程度なら、いっしょにしても
いいか...
0768nobodyさん02/08/26 23:36ID:ggUoz7FV
>>758>>767
スレッド管理用テーブルとログだけのテーブルに分けるということですか?
分ける必要って何ですか?
0769nobodyさん02/08/26 23:47ID:???
>>768
スレッド管理テーブルは、
スレ番号、スレタイ、スレ立て人、timestamp、...
ログテーブルは
スレ番号、本文、timestamp、....

766の言う通り形式によって違うだろうけど、
昔のhypernotes形式なら別でいいかと... ダメっすか?
077075702/08/27 00:19ID:???
>>768
2chのようにスレッド全体に1つのタイトルがあって、
最初に表示されるページがスレッドタイトルの一覧を出すような形式の場合、
>>769
のような形式が考えられるだろう。
しかし、
本文一つ一つにタイトルがあるような場合、
最初に表示されるページをなるべく高速に出したい場合は
工夫が必要になる。
0771nobodyさん02/08/27 00:36ID:BywL+zC1
>>769-770
すごく基本的なことなんですが、1回の処理で複数のテーブルにアクセスすると遅くなったりしないんですか?
0772nobodyさん02/08/27 00:47ID:???
>>771
設計次第。
0773nobodyさん02/08/27 09:40ID:29/b2lpR
die()を強制終了じゃなく、最後の出力って意味で使ったらマズイですか?
0774nobodyさん02/08/27 10:52ID:Pwc6QKdg
sleep(36000);
等はsleepしている間、かなりサーバに負荷がかかるんでしょうか?
また、これ以外、何時間後かに動作させるにはどうするいいんでしょうか?
0775nobodyさん02/08/27 10:52ID:Pwc6QKdg
あ、スマソ・・。
スレ間違えました。。
0776nomony02/08/27 10:57ID:L02RF0Lh
win32環境でmb_eregxは使えないんですかねぇ〜
使おうとするとno functionエラー出るし...
0777nobodyさん02/08/27 11:43ID:/KR5b3gy
>> 776
そんな関数ありません
使えなくて当たり前
0778nobodyさん02/08/27 13:24ID:ZUROk4Fr
こんな関数作ってみました。
これって、法律的にどうなんでしょうね?
単なるリンク張りを自動的に行っている、と見るか
それとも、いわゆる「無断引用」に当たるのか。
//----------------------------------------------------------------
function NewsFromAsahi(){
$URL = "http://www.asahi.com/";
if( ($fp=fopen($URL,"r")) ){
for($phase=0;!feof($fp);){
$str = fgets($fp);
switch( $phase ){
case 0:
if( mb_eregi("<!--\ Start\ of\ Top\ 5\ -->",$str) ){
$HTML = $str; $phase = 1; }
break;
case 1:
$HTML .= $str;
if( mb_eregi("<!--\ End\ of\ Top\ 5\ -->",$str) ) $phase = 2;
case 2: break;
}
}
$HTML = mb_eregi_replace("<img[^>]+>","<li>",$HTML);
$HTML = mb_eregi_replace("<a[ ]+href=\"","<a href=\"".$URL,$HTML);
$HTML = "<dl>\n<dt> News from <a href=\"http://www.asahi.com/\">asahi.com</a>\n<dd>".$HTML."</dl>";
}
return( $HTML );
}
//----------------------------------------------------------------
詳しい人の意見が聞きたいです。
077977802/08/27 13:25ID:ZUROk4Fr
↑見にくくなってしまった....

上の関数は、asahi.comから最新ニュースへのリンクだけを抜き出すものです。
0780nobodyさん02/08/27 13:40ID:???
確か、アメリカでそんな訴訟があったと思ったが。二ヶ月前くらいか。
0781nobodyさん02/08/27 14:54ID:JlzB8Squ
>>778
これは動きますか?
0782nomony02/08/27 16:17ID:L02RF0Lh
>>777

mb_eregxってmb_ereg()等の事なんですがね...
0783nomony02/08/27 16:20ID:L02RF0Lh
>>778
>>780

リンク側が敗訴でしたねぇ〜
サムネイル(タイトルもか?)を表示してうるのが原因だったような
0784nobodyさん02/08/27 16:24ID:/KR5b3gy
>> 782

だったら、そう書け ex. mb_ereg(), mb_eregi()等って
4.2.xだったら、php.iniに

extension_dir = (drive letter):\(php_install_dir)\extensions
extension=php_mbstring.dll

を書く
0785nomony02/08/27 16:29ID:L02RF0Lh
>>784
それは書いてある。
mb_ereg()は動かない(未定義関数エラーが出る)が、mb_send_mail()は動く

PHPマニュアルに「実験的なステータス」とある関数がどうやら使えないようなんだよね
078678402/08/27 16:48ID:/KR5b3gy
>> 785
スマソ

print_r(get_defined_functions());
に含まれてないね。
--enable-mbregexを省いて作成されているようだ。4.2.2-win版
078778402/08/27 16:54ID:/KR5b3gy
>> 785

こっちなら、よさそう
http://www.geocities.jp/rui_hirokawa/php/win/php-4.2.2-Win32-mb-1.0.lzh
0788nobodyさん02/08/28 00:01ID:???
『コアラ>おれはやってないよ。』
と文字列の コアラ> を取りたいんだけど、どうすればいいの?
stripslashes では取れんのかな? 取り方おしえてください。
0789nobodyさん02/08/28 00:14ID:???
>>788
君、何歳?
0790nobodyさん02/08/28 00:47ID:???
>>789
僕は何歳? 例が幼稚って。解決しました。
079178802/08/28 00:49ID:???
↑>>790
0792nobodyさん02/08/28 01:32ID:rTh+CXwx
>>788
質問の仕方がオコチャマだって…
■ このスレッドは過去ログ倉庫に格納されています