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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0305nobodyさん2008/07/03(木) 15:17:34ID:???
Arrayに入ってるならソートすればいいんじゃ?
0306nobodyさん2008/07/03(木) 15:30:45ID:???
$dirurl[] = '../test1/';
$dirurl[] = '../test2/';

foreach($dirurl as $key =>$value){
$dir = @opendir($value);
while($file = @readdir($dir)) {
if (!is_dir($file)){

@include_once($value.$file);

if($sitemap_ok != '1') continue;
$pegedata = explode("." , $value.$file);
$lastupdate = @date("Y-m-d\TH:i:s\+09:00",@filemtime($value.$file));

$sitemaps = <<<_EOD_
<url>
<loc>http://$SERVER_NAME$pegedata[2].html</loc>
<priority>$priority</priority>
<changefreq>$changefreq</changefreq>
<lastmod>$lastupdate</lastmod>
</url>
_EOD_;
echo $sitemaps;}}
closedir($dir);}
今こんな感じです。それぞれ必要な内容は取り出せているのですが、これを更新日時順で並ばせたいと思っています。
arsort($xxx,SORT_NUMERIC);などで更新日時順で並べれる事は分かるのですが、どこをどうすればいいのやら…
もう1ど最初から作り直した方がいいでのでしょうか。
0307nobodyさん2008/07/03(木) 15:36:49ID:???
>>304
DBに突っ込んでソート汁
0308nobodyさん2008/07/03(木) 15:40:30ID:???
>>307
DBすか!やっぱりその方がいいんでしょうね。
将来の事もあるのでsqlを少し勉強した方がよさそうですね。
あまり長くなるのも迷惑なので勉強して出直してきます。失礼しました。
0309nobodyさん2008/07/03(木) 15:45:17ID:???
>>308
Arrayに突っ込んでソート
0310nobodyさん2008/07/03(木) 15:49:46ID:???
>>306
たとえばarsort使いたいなら
$array_nanika[更新時間unix_time] = ファイル名;
みたいな配列を一度作って、arsort。

ただコレだと同じ時間に更新されたファイルがあるとダメだからもう一工夫は要るね。
なんにせよ一度配列に収めろってことです
0311nobodyさん2008/07/03(木) 18:51:15ID:0wf3u7xU
クラスをnewするときに引数を渡したいのですが、
引数のチェックに失敗したときはクラスの作成自体を中止したい場合ってどうすればいいんですかね?


class hoge{
public function __construct($fuga){
if(!$fugaのちぇっく){
//ここで自分自身を破棄?
return false;
}

}

みたいな
0312nobodyさん2008/07/03(木) 19:05:16ID:???
それPHP?
まあ例外投げるんじゃね
0313nobodyさん2008/07/03(木) 19:22:00ID:NDuREgXX
負荷が高いサイトを運営していますが、
例えば、Apacheを80番と81番で平行運用することで負荷分散を図ることは可能でしょうか?
例えば、スクリプトAは80番で処理して、スクリプトBは81番で処理するということです。
これで、速度が倍になれば、Apacheを数十個起動して、速度を10倍位に上げたいと思います。

現在は、一ページ返却するのに10秒から15秒かかり、クライアントから遅すぎるのではないか、
と言われておりまして、これ以上クライアントに我慢してもらうことも難しくなっています。
0314nobodyさん2008/07/03(木) 19:27:05ID:???
すげー馬鹿だなw
0315nobodyさん2008/07/03(木) 19:30:08ID:???
天才現る
0316nobodyさん2008/07/03(木) 19:51:15ID:???
>>313
スレ違い。ここはPHPスレ
君のような馬鹿が来るところじゃない。
まったくこれだからApache厨は馬鹿といわれる。
0317nobodyさん2008/07/03(木) 20:11:30ID:???
スイーツ(笑)
0318nobodyさん2008/07/03(木) 20:32:43ID:???
80番のスクリプトAはサーバAに処理を依頼して、81番のスクリプトBはサーバBに
処理を依頼すれば、倍とはいかないまでも速くなるぞ
オススメ
0319nobodyさん2008/07/03(木) 20:59:00ID:???
>>318
その回答だとWebサーバAとWebサーバBを、同一のハードで運用するかもな。
0320nobodyさん2008/07/03(木) 21:40:28ID:???
>>319
ヒントありがと!

VirtualBoxつかってやってみる!
0321nobodyさん2008/07/04(金) 00:16:00ID:???
  おチンチンびろーん
   ∩___∩
   | ノ      ヽ/⌒)
  /⌒) (゚)   (゚) | .|
 / /   ( _●_)  ミ/
.(  ヽ  |∪|  /
 \    ヽノ /
  /      /
 |   _つ  /
 |  /UJ\ \
 | /     )  )
 ∪     (  \
        \_)
0322nobodyさん2008/07/04(金) 08:49:58ID:???
ラウンドロビン的な?
0323nobodyさん2008/07/04(金) 09:52:39ID:???
ロードバランスしたいわけか
1台じゃ意味ねー
0324nobodyさん2008/07/04(金) 12:26:47ID:???
というかどこに時間かかってるのか
原因も突き止めず対策しても・・・
0325nobodyさん2008/07/04(金) 16:17:56ID:???
インデント無しで見にくいxmlを
$path = "xml_test.xml";//XMLパス(ファイル or URL)
$dom = new DOMDocument("1.0");
$dom->encoding = "UTF-8";
$dom->formatOutput = true;
$dom->load($path);
$dom->save($path);
で整形させようと思ったら出来ない。
$pathの中身が何も変ってないのは何故?

さくらインターネット、FreeBSD 6.1-RELEASE-p23 i386 、Apache/1.3.39 (Unix)、PHP 5.2.5
です
0326nobodyさん2008/07/04(金) 16:23:58ID:???
>>325
別名でsaveしても変わらないならそういう仕様なんだろ。
0327nobodyさん2008/07/04(金) 16:28:22ID:???
>>325
書けてるか確認した?
echo $dom->save($path);
0328たまちゃん2008/07/04(金) 17:36:17ID:DM0Om0jz
PHP 正規表現

PHPの正規表現を勉強しているのですが、どうもうまくいきません。今回は一番簡単な正規表現をつくったのですが、どうやったらよいのでしょうか。

$h = '(名前)様の会員IDは(abc12)で、(5)番目に偉い方です。';

とあったら、名前、会員ID、番号を抜き出すには、どのようにしたらよいのでしょうか?
実際に()は使用しません。
また、$1 や $2 などを使いたいのですが、解説までできればお願いしたいです。
一応自分なりに考えました。
preg_match('/^*.([a-zA-Z0-9]){2}([0-9]+)','名前$2.ID$1 $3 番目に偉い');
()を使えば、2つマッチさせたいときなどに分けることができるのでしょうか?
(名前)様は(数字)
例:太郎様は5

このとき太郎様という日本語の文字を取得するには/^(+.)([0-9])$/

ここで名前は$1になり、数字は$2になるのでしょうか?
どのような時に$1や$2がどっちがどっちなのかは、どのようにしたらわかるのでしょうか?


長々した質問すいません。わかるかた教えてください。
0329nobodyさん2008/07/04(金) 18:28:40ID:???
>>328
正規表現道場
http://pc11.2ch.net/test/read.cgi/php/1168450843/
0330nobodyさん2008/07/04(金) 18:36:56ID:ya62/r1Y
昨日、Apacheの複数起動で質問したものですが、
全く役に立ちませんでした。
phpやっている人の大半はApacheを利用していると思いますが、
Apacheを毛嫌いする理由がよくわかりませんし、
Apacheというより、phpの論点だと思ったので、ここで質問したのですが。
がっかりというか、呆れています。
0331nobodyさん2008/07/04(金) 18:40:38ID:???
スレ違い
0332nobodyさん2008/07/04(金) 18:42:27ID:ya62/r1Y
>>331
スレ違いというより、むしろあなたの勘違いです。
0333nobodyさん2008/07/04(金) 18:47:04ID:???
まぁまぁ、そう熱くならずに自分のおならの臭いを嗅いでエクスタシー感じようよ!
0334nobodyさん2008/07/04(金) 18:48:38ID:???
>>327
確認しましたがしっかり書けていました
ファイル名をフルパスでも試して見ましたが同じでした

うーん、formatOutputってあんま意味ないのか…
がっかり
0335nobodyさん2008/07/04(金) 18:55:24ID:???
>>330
一回のリクエストで10秒掛かるのの処理を分散した言って事?
0336nobodyさん2008/07/04(金) 18:59:20ID:???
数万行のCSVファイルを読み込み、指定した行列のものを取り出す場合では、
数万行のファイル一つを読み込み表示させる方法と
数万行のファイルを分割して、それぞれ読み込み表示させる方法では速度に違いはでてきますか?
どちらが効率よいでしょうか。
0337nobodyさん2008/07/04(金) 19:02:05ID:???
DBを使う
0338nobodyさん2008/07/04(金) 19:20:06ID:???
>>336
例えば1000行ごとにファイルを分けて1100行目なら二つ目のファイルを読み込むってことか?
こっち
0339nobodyさん2008/07/04(金) 19:20:33ID:???
>>337
でたなDB厨
0340nobodyさん2008/07/04(金) 19:29:11ID:???
任意のテキストファイルを読み込み、その内容をブラウザ上に表示
と、いうことをやりたいです。

プログラム上でテキストファイルを指定し、表示させることまでは出来ました
ですが、『任意のファイルを選択』させることが出来ません
何か良い方法や考え方は無いでしょうか?

教科書など持っていないので、オススメの本やサイトがありましたら、紹介していただけるとうれしいです
0341nobodyさん2008/07/04(金) 20:37:53ID:???
誰が選ぶんだ。俺か?断る!
0342nobodyさん2008/07/04(金) 21:17:16ID:???
>>340
ターゲットディレクトリ内に存在するファイルの個数を取得して、
その数だけの範囲を持つ整数の乱数=nを発生させて、
該当するn番目のファイルを開くようにすれば良いんじゃね?
0343nobodyさん2008/07/04(金) 21:23:09ID:???
>>330
これ、釣りじゃないの?

こんな知識、というか思考力で過負荷になるようなサイト構築できるのか?
信じられん。よほどサイトコンテンツが良いのか、サーバにMSXでも使って
いるんじゃないのか?
0344nobodyさん2008/07/04(金) 22:36:40ID:???
>>340
input type="file"
0345nobodyさん2008/07/04(金) 22:53:21ID:zZLzuSUy
いまだにXPとか使ってるヤツって何なの?一般人なの?
http://news24.2ch.net/test/read.cgi/liveplus/1215164615/
0346nobodyさん2008/07/04(金) 23:22:17ID:???
>>343
我々の想定外のリソース超消費ロジック組んでるんだとオモ
0347nobodyさん2008/07/05(土) 03:42:00ID:???
数万行のファイルならすぐに過負荷になる。PHPのようなブラウザ表示デバッグだと、その時点で気付くはず。
0348nobodyさん2008/07/05(土) 03:52:36ID:???
>>347
たかだか10MB程度のファイルで?

一行256バイト×5万 = 12,800,000 = 約12MB
0349nobodyさん2008/07/05(土) 04:08:23ID:???
凄まじい密度だな
0350nobodyさん2008/07/05(土) 04:14:55ID:???
密度? CSVファイルで?
なんのこといってんの?
0351nobodyさん2008/07/05(土) 04:17:59ID:???
お前ら早朝に喧嘩してないで、
ジョギングでも行ってこいよ。もう外は明るいぞ。
0352nobodyさん2008/07/05(土) 04:19:18ID:???
<?xml version="1.0" encoding="UTF-8"?>
<head>
<score sort_no="2">
<score sort_no="1">
<score sort_no="3">
<score sort_no="4">
</head>
こんな感じのxmlファイルをsort_noでソートして保存しようと思って、simplexmlで読み込んで
usort、uasort、uksortやったけど全部ダメだった
まぁオブジェクトだから当然と言えばそうなんだけど、オブジェクトをforeachする時に出てくる順番を変える方法教えて下さい
php5です
0353nobodyさん2008/07/05(土) 04:36:38ID:???
出来ました
foreach($dom->score as $value){
$dom2[]=$value;
}
uksort($dom2,"sort_list");
こんな感じで
リファレンスって難しいなあ
0354nobodyさん2008/07/05(土) 04:53:16ID:???
お前は何を言ってるんだ
0355nobodyさん2008/07/05(土) 04:55:12ID:FcvNsP01
出来てなかった…
0356nobodyさん2008/07/05(土) 08:16:24ID:???
>>348
とりあえず一回、「PHP 配列 メモリ」で検索してみたほうがいいんじゃない。
メモリ使用量はかっこいいぜ。
0357nobodyさん2008/07/05(土) 09:02:09ID:???

      ∩___∩
   (ヽ  | ノ      ヽ  /)
  (((i ) /  (゜)   (゜) | ( i)))   …なんちゃってねっ! チンポっ☆
 /∠彡    ( _●_)  |_ゝ \
( ___、    |∪|    ,__ )
    |      ヽノ  /´
    |        /
0358nobodyさん2008/07/05(土) 11:33:06ID:oP1dT0fT
test.php?1の場合、$no=1のようにGETリクエストの値を動的に変数に入れたいんですけど、どういった方法が存在しますか。
0359nobodyさん2008/07/05(土) 11:45:07ID:???
noなんてどこにも出てきてないのに動的にとか意味がよく分からない
0360nobodyさん2008/07/05(土) 11:46:38ID:???
>>358
$no = $_SERVER['QUERY_STRING'];
0361nobodyさん2008/07/05(土) 12:49:00ID:???
>>358
適当なフレームワークのソース呼んで、ルーティング処理パクレ

例えば、
symfonyなら /index.php/1を
/index.php/hogeModule/hogeAction/no/1みたいにしてくれるのを設定ファイルでかけるから
03623582008/07/05(土) 13:01:14ID:oP1dT0fT
>>359-361
ありがとうございます。
参考にします。
0363nobodyさん2008/07/05(土) 13:06:33ID:???
いやそれだけかよ。言葉足らずなんだからちゃんと説明しろよ。
0364nobodyさん2008/07/05(土) 16:40:16ID:7nNiVjXj
>>363
言葉が足りていても、私の時には全然回答もしてくれませんでしたが。
Apache複数起動で悩んでいる中年SEより。
0365nobodyさん2008/07/05(土) 16:50:08ID:???
。・゚・(ノД`)・゚・。
0366nobodyさん2008/07/05(土) 16:50:15ID:???
しつこいな
回答あるだろ
0367nobodyさん2008/07/05(土) 16:52:18ID:???
複数起動はかえって負荷かかる
0368nobodyさん2008/07/05(土) 16:59:30ID:???
>>364
何を根拠に言葉が足りていたとw
0369nobodyさん2008/07/05(土) 17:05:28ID:???
>>364
たとえ2つPHP実行しても速くならないよ。
玉子焼き1000個同時に焼いても1秒で焼けない。1個と同じ時間かかる。
0370nobodyさん2008/07/05(土) 17:05:53ID:???
負荷分散の対策が、どういった理屈で複数起動にたどり着いたのかが不思議。
同一サーバーでの複数起動って意味だよね?何かあるんだろうか。
それとも日本語が不自由で考えてることをちゃんと文章化できていないのか。

てか、どっちにしろPHPとはまったく関係ないからスレ違いになるのか・・・
0371nobodyさん2008/07/05(土) 17:09:04ID:???
遅い原因調べないSEはいなくなって欲しい。
0372nobodyさん2008/07/05(土) 17:13:56ID:7nNiVjXj
前にも書きましたが、スクリプトがAとそこから呼び出しているBがあります。
スクリプトAは、2000行以上ありますが、0.1秒程度で終わりますが、
スクリプトBは、400行しかないのに、10秒前後もかかります。

そのことから、スクリプトAを80番ポートで動かし、
スクリプトBを10分割して、81〜90番ポートで動かせば1秒で終了するという見積もりです。

ただ、やり方がよくわかりません。
スクリプトBが遅いのも原因不明です。
phpがインタプリタ言語だから遅いって言ってしまえばそれまでですが、
だからといって10秒は遅すぎます。

負荷分散する方法としてこれ以外に思いつきません。
0373nobodyさん2008/07/05(土) 17:16:26ID:7nNiVjXj
もう一つ付け加えると、Apacheはマルチスレッド処理といって、
平行処理ができると聞いています。phpの中だけで並行処理ができる方法があれば、それを教えて頂く方が簡単ですが。
0374nobodyさん2008/07/05(土) 17:16:51ID:???
ソースうp
0375nobodyさん2008/07/05(土) 17:19:32ID:???
その前に、その400行で何をやっているの?
ざっくり400行じゃなくて、遅い箇所があるとおもうけど。
0376nobodyさん2008/07/05(土) 17:24:01ID:7nNiVjXj
スクリプトBでは、単にデータベース(MySQL)と接続して、
データを取得して更新して、取得したデータをスクリプトBに返す処理しかやっていません。
MySQLは、処理速度が速いデーターベースと聞いておりますし、
それ以外では、文字列を編集する処理をやっていますが、それはデータベースにデータを渡す際の
エスケープ処理です。ソース全体を呼んでみましたが、特に遅いと思われる箇所もありませんでした。
0377nobodyさん2008/07/05(土) 17:28:11ID:???
じゃあDBが速くならないとPHPが速くても速くならないよ。
0378nobodyさん2008/07/05(土) 17:30:44ID:???
>>376
とりあえずさぁ、そのスクリプトに時間計測するコードを入れて、
一番遅い所を一行に絞って、そのコードをココに貼ればわかるよ。
0379nobodyさん2008/07/05(土) 17:42:07ID:???
どう考えても処理のある点がボトルネックになってるだろうに
phpはインタプリタ言語だから遅くても仕方ないと
納得する発想がPGとしてありえないってw
てか最初からずっと同じこと言われてるじゃん。少しは質問の仕方も進歩してくれ。
0380nobodyさん2008/07/05(土) 17:52:45ID:???
プログラムする人ってこんな能書きをダラダラ言う人多いね。
キモイ。
0381nobodyさん2008/07/05(土) 17:54:33ID:???
>>376
マルチスレッドが知りたいのなら、「PHP マルチスレッド」でググリなよ。
ここで説明するより分かり易いところがいくつか見つかるよ。

Apache複数起動とかポートがどうとか、
PHPとは関係ないことを言うから、スレ違い、ネタだと判断されたんだよ。
「マルチスレッドを利用する方法を知りたい」だけでいいじゃん。
0382nobodyさん2008/07/05(土) 18:04:06ID:???
マルチスレッドも関係ないだろw
0383nobodyさん2008/07/05(土) 18:05:40ID:???
正直その程度の知識で金もらって仕事してんの? と思うわけだが
できない事はできないって言うのも仕事の内ですぜ
0384nobodyさん2008/07/05(土) 18:06:06ID:???
>>376
> データを取得して更新して、取得したデータをスクリプトBに返す処理しかやっていません。

えーと、ウェブアプリに限らずほとんどの処理は

データを取得して、更新して、取得したデータを何かに渡す物ですが?

その処理の内容で遅くないと判断できるわけが無いよね?

いいか、あんたがヘボだから、あんたが作ったソフトが重いんだ。
技術不足なんだよ。あんたは。
0385nobodyさん2008/07/05(土) 18:12:56ID:???
>>376

君には難しいことを言ってもわからないと思うから
技術者じゃなくてもわかることを聞くねw

サーバー費は月いくらかかってる?
0386nobodyさん2008/07/05(土) 18:19:34ID:???
もう答えが出てるなら、まったく関係ないところをネチャネチャ叩くなよ気持ち悪い奴らだな
0387nobodyさん2008/07/05(土) 18:20:04ID:???
>>383
できないって最初から言ってるのにどんどん小難しい案件が舞い込んできます。
当然やりますが。でも出来ませんっていつも言います。
0388nobodyさん2008/07/05(土) 18:28:07ID:???
物理的に台数増やしてロードバランス、これ
でもDBサーバが先に悲鳴をあげるだろうから
レプリケーションもやっとけ
0389nobodyさん2008/07/05(土) 18:36:15ID:???
>>387
口で言うだけなら誰でも出来るんだよ。
0390nobodyさん2008/07/05(土) 18:51:52ID:???
>>382
関係なくはないだろう。早くなるとは思えんが。
0391nobodyさん2008/07/05(土) 18:55:18ID:???
ボタンを押すと飛ばすようにするにはどうすればいい?

print"で<a href=〜>〜</a>
で、リンク生成は出来るんだが、
0392nobodyさん2008/07/05(土) 18:58:30ID:???
http://www.tagindex.com/html_tag/form/input_submit.html?test=%82%A0%82%A0
ここのページの様にフォームに入力してからボタンを押すと、各検索エンジンに飛ばしたいんだけど。
0393nobodyさん2008/07/05(土) 19:00:32ID:???
ネタじゃなかったのか…。そんなに案件が降ってくるなら他の専門家に
任せて自分はちょっとピンハネの方が顧客も自分も幸せだと思うぞ。

現在の技術うんぬんよりも、解決方法にたどり着く術が間違っているから。
0394nobodyさん2008/07/05(土) 19:20:33ID:???
>>392
「検索エンジン php」
0395nobodyさん2008/07/05(土) 19:23:08ID:???
ネタか真性か判断するPHPコードを教えてくん。
0396nobodyさん2008/07/05(土) 19:33:45ID:???
>>394
d、php配布されているのじゃなく、自分で作りたいんです
0397nobodyさん2008/07/05(土) 20:57:26ID:???
その検索エンジンのサイトにやり方出てるだろ
0398nobodyさん2008/07/05(土) 21:17:40ID:???
>>387に対する>>389の返答が分かりません。教えてください。
0399nobodyさん2008/07/05(土) 21:18:45ID:???
いい加減荒らすのはやめてくれ
0400nobodyさん2008/07/05(土) 21:26:54ID:???
>>396
なんだかPHPじゃなくてHTMLのformとinputの使い方の質問ぽい気がするんだが。
まあ俺には難しくてわかんないや。

>>398
わからないがあまり教えてほしいとは思わなかった。
04013962008/07/05(土) 21:42:04ID:???
>>400
それです。
HTMLとphpの組み合わせは対象外でしょうか?
0402nobodyさん2008/07/05(土) 21:44:22ID:???
>なんだかPHPじゃなくてHTMLのformとinputの使い方の質問ぽい気がするんだが。

>それです。
>HTMLとphpの組み合わせは対象外でしょうか?

え??
ごめん、あなたの質問は難しくて俺にも理解できないや
0403nobodyさん2008/07/05(土) 21:45:19ID:???
>>401
ここをよく読んでごらん
ttp://www.google.co.jp/intl/ja/searchcode.html
0404nobodyさん2008/07/05(土) 21:45:21ID:???
検索エンジンのページに検索窓のHTMLタグがあるだろ
それコピペしてHTMLに貼っとけや
■ このスレッドは過去ログ倉庫に格納されています