トップページphp
990コメント299KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/05/03(土) 22:52:16ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0285nobodyさん2008/05/08(木) 22:38:35ID:???
>>284
フムウそんな罠があったとは
調べてみるサンクス
0286nobodyさん2008/05/08(木) 23:28:14ID:???
プレス‐リリースを発信してるサイトはPHPで作ってるのが多いですが、簡単に作れますか?
0287nobodyさん2008/05/08(木) 23:36:49ID:???
質問内容から判断すると簡単には作れないだろう
誰かに作成依頼するなら話は別だが
02882272008/05/09(金) 00:29:55ID:???
>>272

どもです
直だと早いんですよねー

PHPからだと遅い… 謎
鯖がくそなのかなあああああ
0289nobodyさん2008/05/09(金) 00:38:14ID:???
そもそも、その直でのアクセスしてるマシンとPHPが動いてるマシンが
同一なのかそうでないのかすら書かれてないのに判断できる訳がない

違うと推測して>>272のIPアドレスでのアクセスは試してみたのか?
02902272008/05/09(金) 01:08:14ID:???
>>289

PHPが動いてるのはレンサバですねー

アクセスしてるのは外部のサイトの公開API

直だと早い早い RESTだからブラウザ直でアクセスしても早いよ
借りてるうちのレンサバのPHP -> 外部APIが激遅

なんでかねえ・・・
0291nobodyさん2008/05/09(金) 01:26:12ID:???
直が速いのはわかったから、少しは切り分けくらいしたらどうだね
simplexml_load_file()を含む部分のコードを自分の端末で動かして外部サイトに繋いでみるとか
レンサバにsshとかで入れるのなら、レンサバのw3m等で繋いでみるとか

PHPの問題なのか、レンサバの問題なのかすらわからんじゃないか
0292nobodyさん2008/05/09(金) 01:26:13ID:???
02932272008/05/09(金) 02:55:54ID:???
>>291

その辺はテストしてますよー

PHPからだと遅い…
simplexml_load_fileというか HTTPリクエスト系が激遅

鯖なのかな
それにしては激遅だ
02942272008/05/09(金) 03:06:20ID:???
w3m もう一度試したら 遅いわ・・・

鯖なんかなあ
時間帯が時間帯だしなあ

PHPからはいつやっても遅いのはたしかなんだけど
0295nobodyさん2008/05/09(金) 03:12:39ID:???
とりあえずIDは出した前
02962272008/05/09(金) 03:16:08ID:snanmjyt
wgetでやっても同じですねー

Resolving ... で時間がかかってる

時間が時間だけにたまたまかもだけど

ブラウザからとPHPからとで 相手側がなんか処理わけとるんかなあ
02972272008/05/09(金) 03:19:58ID:snanmjyt
出てきた IPでつないだら早い・・・・

これはDNSが問題???

どうしようもないのか よくわからないんですけど
02982272008/05/09(金) 03:32:48ID:snanmjyt
わかたこと

w3m, getw から ドメインでアクセスすると遅い
IP直でアクセスすると早い

Resolving ドメイン名 .... が長い

だけど nslookupでドメインからひいて見ると IPはすぐに返ってくる
よくわからん・・・

その場しのぎでIPでアクセスするようにするか・・
0299nobodyさん2008/05/09(金) 03:50:29ID:???
>>272,289でとっくに言われてるのに・・・
03002772008/05/09(金) 03:55:06ID:snanmjyt
すんません
いみがわからなかったから調べてました…

PHPからgethostbyname()で事前に変換してみても おそかった
直IPだと早い

ということは 解決方法はなしですかね??
今、IP直でやるようにしましたが 万が一相手の鯖がかわったらアウトですよね
0301nobodyさん2008/05/09(金) 03:59:05ID:???
解決方法はレンサバに文句を言う事

予想ではipv6関係でbind9が遅くなってる
でもこんなんはレンサバの設定を見なきゃ何も言えん
もはやPHP関係ないし
03022272008/05/09(金) 04:03:33ID:snanmjyt
>>301

そうですか…
とりあえず原因がすっきりしたことに感謝します

レンサバにもきいてみます

しかたないのでしばらくはIP直でやるか
cronでときどき gethostbyname しておいて それを使うとかしようと思います
0303nobodyさん2008/05/09(金) 04:26:38ID:???
test
0304nobodyさん2008/05/09(金) 08:07:25ID:???
いつからここは日記帳になったんだ
03052432008/05/09(金) 09:38:31ID:NVAYhOqr
みなさんありがとうございました。
ようやくそれなりに満足できるものが作れました。
0306nobodyさん2008/05/09(金) 09:42:34ID:???
k.k.projects再始動します

帰ってきたk.k.projects【私がやります】
http://pc11.2ch.net/test/read.cgi/php/1210192743/
0307nobodyさん2008/05/09(金) 11:35:21ID:???
<a href="*****.php<?=SID?>">リンク</a>
というのを
<?php ?>のなかで書く場合どう書けばいいのでしょうか?

<?php echo "<a href=\"*****.php" ?><?=SID?><?php echo "\">リンク</a>">

ではかっこ悪いような・・・
0308nobodyさん2008/05/09(金) 11:41:47ID:???
<?php echo '<a href="*****.php"'.SID.'>リンク</a>'; ?>

てか、配布されてるスクリプト改造したいんだろうけど、
ちょっとぐらいは言語の勉強しようよ・・・
0309nobodyさん2008/05/09(金) 11:51:10ID:???
<?php
echo '<a href="*****.php' . SID . '">リンク</a>';
?>
0310nobodyさん2008/05/09(金) 12:30:14ID:???
PHPファイルをコマンドラインから起動しmysql_connect()を実行したいのですが
Call to undefined function: mysql_connect()
と出てしまいます。
web上からは正常に動くのですがどのようにすればいいのでしょうか
03113102008/05/09(金) 12:31:11ID:???
自己解決しました
0312nobodyさん2008/05/09(金) 12:32:40ID:???
コマンドラインとWebで使ってるphp.iniが違ってるんじゃなかろうか。
0313nobodyさん2008/05/09(金) 12:49:35ID:???
>>312
ありがとうございます。
-c オプションでphp.iniを指定したところ無事動きました。
0314nobodyさん2008/05/09(金) 14:36:27ID:TK9WqWmp
いまログインしているユーザー数を取得したいのですがどのような仕組みなんでしょうか?

ttp://xoopscube.jp/のオンライン状況という機能をつくたいのですが、
pearパッケージでそのようなものがあるのならなるべく利用して作りたいです。
0315nobodyさん2008/05/09(金) 14:53:28ID:???
現在生成されているセッション数読み込んでんじゃね?
0316nobodyさん2008/05/09(金) 15:08:30ID:???
>>315

>>314じゃないけど、そんな関数あるの?
以前気になって調べたけど、見つけられなかった。
http://www.php.net/manual/ja/book.session.php
0317nobodyさん2008/05/09(金) 15:15:33ID:???
session_save_pathを使って、保存先を変更して固定
そこのファイルを数えるとかだとダメかな
0318nobodyさん2008/05/09(金) 15:18:49ID:???
>>317
そこっと設定によってはアクセスできないんじゃないの?
0319nobodyさん2008/05/09(金) 15:21:33ID:???
そこのコード見ればいいじゃん。
0320nobodyさん2008/05/09(金) 16:23:57ID:???
セッション切れてもファイルは残るんじゃなかったっけ?
0321nobodyさん2008/05/09(金) 16:26:43ID:???
ためしてみたけど、残ったね
どういう仕組みなんだろ
0322nobodyさん2008/05/09(金) 16:27:42ID:???
セッションも自動でタイムアウトするようにすればいいよ
0323nobodyさん2008/05/09(金) 16:27:45ID:???
つ【ガーベージコレクション】
0324nobodyさん2008/05/09(金) 16:35:23ID:TK9WqWmp
考えてみたのですが、ごまかしかもしれませんがこのような仕組みでも大丈夫でしょうか?
セッション使ったやり方がどうしてもわからないのでこんな感じを考えてみました

訪問者のアクセスログを取得

現在の時刻より直近1分前までののログを取る

ユニークなidのみ抽出、カウント

オンライン人数表示
0325nobodyさん2008/05/09(金) 16:40:19ID:???
で、そのユニークなIDというやつをどうやって抽出するので?
0326nobodyさん2008/05/09(金) 16:46:13ID:TK9WqWmp
すいません、まちがえました
idではなく、ipです
0327nobodyさん2008/05/09(金) 16:49:03ID:???
ログイン時のIDと時間を記録しておけばいいじゃん
ログアウトしたら消し、タイムアウトしたら消し
0328nobodyさん2008/05/09(金) 16:50:54ID:???
ログアウトするとは限らなく根?
0329nobodyさん2008/05/09(金) 16:51:32ID:???
あと、こういったたぐいのスクリプトってログインしなくてもみれてるよ
0330nobodyさん2008/05/09(金) 16:55:23ID:???
時代か・・・ちょっと昔のWEBチャットには普通にあったよね。
訪問者のIPアドレス/時刻を記録して、
3分くらい前までのIP数をカウント。

それだけだ。
0331nobodyさん2008/05/09(金) 17:05:13ID:???
こんなのも思いつかないってある意味凄いな。
0332nobodyさん2008/05/09(金) 17:07:31ID:???
>>324
アクセスログだと、だんだん長くなるからパフォーマンスが、ちと不安。

自分は使ったことはないけど、共有メモリに session_id で取得したIDをキーとして
最終アクセス時刻を格納した配列を格納して、それからカウントしたほうがいい気がする。

http://www.php.net/manual/ja/book.shmop.php
http://www.php.net/manual/ja/function.session-id.php
0333nobodyさん2008/05/09(金) 17:08:27ID:???
>>331
答えれもしなかった奴は黙っとけよ。ホームレスが。
0334nobodyさん2008/05/09(金) 17:10:16ID:???
アクセスが多かったら処理がすごいことになりそうだな
0335nobodyさん2008/05/09(金) 17:11:21ID:???
>>332 訂正
マニュアル見直したら、共有メモリって、直には配列とかオブジェクト格納できないっぽい。
まぁ、適当なデータ構造作れば、意図することは可能だと思うけど。
0336nobodyさん2008/05/09(金) 17:15:09ID:TK9WqWmp
いまttp://www.yumemaboroshi.net/65rank0/ここに登録されたオンラインカウンターを何個か
dlしてソースみたのですが、自分のやり方でも問題ないかと思いました。

ご指摘された大量アクセスの場合に備えて、>>332さんのアドバイスを元にやり方を考えて見ます。
ありがとうございます
0337nobodyさん2008/05/09(金) 17:16:10ID:???
なんでそんな難しく考えてるの?

timstamp,ipadress
timstamp,ipadress
timstamp,ipadress
timstamp,ipadress

の2カラムのCSVなりをアクセス毎に走査して、指定秒数が過ぎた行は削除。
後は残りの行数カウントするだけなんだが。

同一IPが1カウントになるのが嫌なら、クッキーでも食わして判別すりゃOK
0338nobodyさん2008/05/09(金) 17:18:53ID:???
横槍ですまないが、それは質問者がとっくにさっき書いてなかった?
0339nobodyさん2008/05/09(金) 17:18:57ID:???
ガベコレぐらい自分で作れよw
0340nobodyさん2008/05/09(金) 17:22:35ID:???
>>339
お前が作れよカビ饅頭
0341nobodyさん2008/05/09(金) 17:23:04ID:???
>>338
アクセスログだと無駄に走査する行数が増えるだろう?

では無くて専用の記録ファイルをつくっておいて、
常時内容を走査するって事よ。

アクセス
 ↓
ログイン数記録ファイルを走査
 ↓
自分のIPと、期限切れIPを削除
 ↓
自分のIPを追記
 ↓
ファイル更新

って感じに。
03423072008/05/09(金) 18:23:41ID:Ln96d6P1
改造じゃなくて、システム構築中です。。
SIDは定数だから普通に書いたらよかったんですね。
うっかりしてました。
ありがとうございます。
0343nobodyさん2008/05/09(金) 19:53:51ID:???
SSI使ってオンラインかどうかってわからないかったっけ?
0344nobodyさん2008/05/09(金) 19:55:14ID:cq1aYSJI
オブジェクトの任意のメソッドを上書きする方法があれば教えて下さい
0345nobodyさん2008/05/09(金) 20:16:09ID:???
>>344
runkiを調べて見るといいよ
0346nobodyさん2008/05/09(金) 21:37:35ID:TK9WqWmp
おい、質問ないのか過疎りすぎだろが!
0347nobodyさん2008/05/09(金) 21:42:53ID:???
またキャラが不安定な人か
0348nobodyさん2008/05/09(金) 21:46:51ID:???
ワロタ
0349nobodyさん2008/05/09(金) 22:00:14ID:???
じゃぁ質問しよう
FWに最低限必要な機能ってなんだと思う?
最近使い始めたFWの機能がどーも最悪なもんでw

ちなみに個人的には
バリデーション、DBへのラッパー
あたりかなーと思ってるんだけど
0350nobodyさん2008/05/09(金) 22:00:53ID:???
あ、あとテンプレートエンジンね
0351nobodyさん2008/05/09(金) 22:25:45ID:???
自分で作ったPHPをUPするのがレンタルサーバでしたら
セキュリティの事とか深く考える必要は無いと言われたんですが
本当なんでしょうか??
0352nobodyさん2008/05/09(金) 22:29:31ID:???
そんなことはない。
0353nobodyさん2008/05/09(金) 22:32:37ID:???
>>352
危ない危ない。。 
引っかかる所でした。ありがとうございます
0354nobodyさん2008/05/09(金) 22:35:19ID:???
鯖のセキュリティーのつもりで言ったのかもね
0355nobodyさん2008/05/09(金) 22:54:11ID:???
確かにサーバのセキュリティ自体は考える必要ないっていうか
権限がなければ考えてても仕方ないw

スクリプト自体のセキュリティはいつの時でもしっかり考えないと。
0356nobodyさん2008/05/09(金) 23:02:42ID:???
>>354
>>355
あっ!なるほど。 私のうっかりですね・・・(汗汗
お返事ありがとうございました。
0357nobodyさん2008/05/10(土) 10:59:14ID:3v++6OkN
オブジェクトの指定したメソッドにフックを差しこみたいと思います
runkitを入れたのですが、
これだとクラスのメソッドを書き換えるのでちょっと大げさです
オブジェクトだけのメソッドを書き換えるにはどうしたらいいですか?
0358nobodyさん2008/05/10(土) 11:39:01ID:???
>>357
継承
0359nobodyさん2008/05/10(土) 11:52:36ID:???
インスタンスに対して操作したいんです
0360nobodyさん2008/05/10(土) 12:45:57ID:???
何それどういう状況?
0361nobodyさん2008/05/10(土) 13:22:00ID:???
auでセッションがうまくいきません。

ログイン
 ↓
セッション生成、値格納
 ↓
ページ移動(ページA)
 ↓
セッション情報を使う
 ↓
ページ移動(ページB)
 ↓
セッションがなくなる

こんな感じになります。
ページAとBは同じソースなので
プログラムがおかしい時はどっちもおかしくなりますw

DoCoMoはうまくいったのですが....

解決方法をご存知の方。
教えてください!
よろしくおねがいします、
0362nobodyさん2008/05/10(土) 13:24:46ID:vET5c+ho
質問です
良くある、ページが2つのエリアに別れていて「左がメインコンテンツ」「右がコンテンツに関連する広告」
みたいな構造って、左のコンテンツを吐き出す処理の中で、その中のキーワードに応じて
右のコンテンツを吐き出すfunctionを叩くような形になっているんでしょうか?
もしくは、広告のキーワードを変数として吐き出して、それを広告部分のphpが取得して
出力処理って流れなのかな? (ad.php?key="music"みたいな…)

どういうやり方で作ればいいのか、アドバイスお願いします
0363nobodyさん2008/05/10(土) 13:48:26ID:???
左がメインコンテンツで右が広告なんてサイト知らんわボケ
0364nobodyさん2008/05/10(土) 14:36:45ID:???
2ペインでどっちが広告でもいいじゃねえか

で、>>362の場合は好きに作れって結論になると思うが
良くあるって話だと今はフレーム切らないから、メインコンテンツを吐く処理中に
広告を吐くfunctionを呼びゃいいんじゃね
テンプレートエンジンを使ってるなら、出力順なんて気にならないだろ
03653612008/05/10(土) 14:49:38ID:???
すいません、ケアレスミスでした。
0366nobodyさん2008/05/10(土) 14:51:57ID:???
>>362
コンテンツの内容に合わせて広告も変えるってことでいいのかな

それだとしたらphpshotのここ最近の記事を参照
ヒントはここまで
0367nobodyさん2008/05/10(土) 15:20:51ID:???
>>362 ってアフィリエイトとかの話かと思ったんだけど、違うのかな。
どこまで最適にやるかって話はあるけど、amazonのなんかだと自動的に判別してくれるんじゃないの。
0368nobodyさん2008/05/10(土) 15:34:43ID:baYV5j6g
おしえてgooに出したんですが回答が無かったもので、マルチポスト失礼します、


PHPにおける特殊記号の取り扱いについて質問させていただきます。

以下の処理を行っているのですが特殊記号'―'(ダッシュ)の扱いで悩んでいます。
1.文字コード'utf-8'のファイル内文字列をget_filecontentsで取得
2.取得文字列を'SJIS'に変換(mb_convert_encoding使用)
3.文字列内に'―'が存在していた場合'?'となってしまう
ex)"今日の野球結果 5―6"(文字コードutf-8)
 ->SJIS変換後 "今日の野球結果 5?6"

特殊文字'―'を文字コード変換できずに上記のような現象が起こっていると
思うのですがこれを回避する方法がありましたらご教示お願いします。

※サーバ:solaris
 PHPバージョン:4.3.8

0369nobodyさん2008/05/10(土) 15:40:48ID:???
マルチ乙
0370nobodyさん2008/05/10(土) 15:43:06ID:???
php.iniの内部エンコーディングの設定とか
該当部分のコードぐらい書けよ
だれもおまえが書いたようなコード書けるんだし、著作権を主張するほどのライブラリってわけじゃないんだろ
0371nobodyさん2008/05/10(土) 15:57:59ID:???
>>368
土曜も仕事ですか?
0372nobodyさん2008/05/10(土) 16:12:21ID:baYV5j6g
>>371

いや、仕事じゃないんですけれど
解決できてず、悩んでるので書き込みさせて頂きました。
0373nobodyさん2008/05/10(土) 16:27:38ID:???
>>368
これって MS932がSJISと異なるとかいう話題だよね。
試してないけど、SJISじゃなくて、SJIS-WIN とか指定すればいいのかな。
0374nobodyさん2008/05/10(土) 16:28:39ID:???
DoCoMo以外で
session_destroy();
するとうまく動作しないんですがなんででしょうか
0375nobodyさん2008/05/10(土) 16:29:14ID:baYV5j6g
$boolReadXmlData = XML_Analizer( HOGE_RDF,CORRECT_FEED_HOGE );
function XML_Analizer($file,$correct_feed){
if( !file_exists( $file ) ){
$cpCmd = '/usr/bin/cp -p ' . $correct_feed . ' ' . $file;
system( $cpCmd, $ret );
}
$data = file_get_contents($file);
    $data = str_replace("[―]","-",$data);
if( !$data ){
return false;
}
$str_encoding = mb_detect_encoding($data, 'auto');
if ($str_encoding != 'UTF-8') {
$data = mb_convert_encoding($data, 'UTF-8', $str_encoding);
}
$Unserializer =& new XML_Unserializer();
$Unserializer->setOption('parseAttributes', TRUE);
$status = $Unserializer->unserialize($data);
if ($status === true) {
$res_array = $Unserializer->getUnserializedData();
$arr_result_constructure[] = $res_array;
return $arr_result_constructure;
}else{
return false;
}
}

この後utf-8からSJISに文字コード変換しています
'―'の文字コード「?」を使って文字変換できないものでしょうか。
※$data = str_replace("[―]","-",$data); このあたりで
0376nobodyさん2008/05/10(土) 16:31:23ID:baYV5j6g
>>373

ありがとうございます
早速ためしてみます!
0377nobodyさん2008/05/10(土) 16:32:23ID:DzSEGQLQ
配列 $arrayから偶数番目の要素のみ取り出すにはどうしたらいい?

$array = array(あ,い,う,え,お,か,き,く,け,こ);

これを

$array = array(い,え,か,く,こ);

にしたいんだけど。
0378nobodyさん2008/05/10(土) 16:39:49ID:baYV5j6g
>>375

誤記がありました
この後utf-8からSJISに文字コード変換しています
'―'の文字コード「&#8213;」を使って文字変換できないものでしょうか。
~~~~~~~~~~~
※$data = str_replace("[―]","-",$data); このあたりで
0379nobodyさん2008/05/10(土) 16:56:03ID:???
$array = array('あ','い','う','え','お','か','き','く','け','こ');
$dest = ();
$t = length($array) / 2;
for (int i = 0; i < $length; $i++) {
$dest[] = $array[$i * 2];
}
0380nobodyさん2008/05/10(土) 17:02:50ID:???

$_SESSION = array();

session_destroy();

session_unset();

これらを使ってセッションの中身(?)を消そうと思ったんですが
DoCoMoではdestroy以外、auでは全てで消えませんでした。

仕様ですか?w
03813802008/05/10(土) 17:08:56ID:???
auでは
old A
new B
data 100

としてお気に入りに入れて
再度アクセスしたら
old B
new C
data 100

で出てくるような感じです。

A、B、CはPHPSESIDをあらわしてます。
dataはsessionでもちまわってるデータです
0382nobodyさん2008/05/10(土) 17:46:30ID:09hEgNWC
php5.2.6内にPEARのバッチファイルが無いのですが
どうやってインストールしたらいいのでしょうか?
0383nobodyさん2008/05/10(土) 18:18:12ID:???
>>376
失敗だったら失敗で、結果を書いてってほしいな。
03843802008/05/10(土) 18:50:06ID:???
cookieの破棄処理をはさむと
アドレスはBでくるのに
old C
new D

になってしまい、それはそれでおかしな動作になります(T_T)
■ このスレッドは過去ログ倉庫に格納されています