【PHP】下らねぇ質問はここに書き込みやがれ 33
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/23(木) 00:27:02ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0155nobodyさん
2006/11/24(金) 14:39:10ID:???クッキーとかいらね
要は確認までいったらテンポラリディレクトリにファイルを上げる
正常に完了までいった場合はテンポラリから正ディレクトリへ移す
確認でやっぱやめたってなったファイルはテンポラリに残っていく
テンポラリの中で現在より24時間前とかのファイルだったら
明らかに確認途中であきらめて残ったゴミファイルでしょ
その掃除作業を登録→確認→完了のどこかでやればよいということ
0156nobodyさん
2006/11/24(金) 14:41:50ID:???0157147
2006/11/24(金) 14:50:33ID:???「テンポラリディレクトリ」というのは、画像をアップロードするディレクトリと
別のディレクトリを作って、そこにアップするということですよね?
次に確認画面で下のようなソースを書きました。
$time_stmp=mktime();
echo tempnam($file_name,"$time_stmp");
出力画面には
C:\WINDOWS\TEMP\116207.tmp と出ます。(ローカル上でテストしてるので)
あとはTEMP(テンポラリディレクトリ)の中のタイムスタンプ付きファイルを
調べて、IFで指定時刻のタイムスタンプと比較して古いファイルなら
unlinkする処理を組み込めば、OKということでいいでしょうか?
0159147
2006/11/24(金) 16:03:04ID:???0161nobodyさん
2006/11/24(金) 20:49:40ID:???↓
いくつのファイルをアップロードして送信したかを調べる
$max_num=count($test);
echo $max_num;
としても、ファイルが1つでも2つでもフォームを用意した分だけMAX値が求められます。
例えば、<input type="file" name="test[]">を3つ設置したら
かならずMAX値は3になるような。
どうやったら選択したフォームのみの計算が出来るのでしょうか?
0162nobodyさん
2006/11/24(金) 21:56:58ID:???想像で答えるなら、
foreach ($_FILES['test']['error'] as $e) {
if ($e == UPLOAD_ERR_OK) {
$max_num++;
}
}
ってことがしたいってことかな。「フォームの選択」ってとこの意味がよくわからんな
0164nobodyさん
2006/11/24(金) 22:32:33ID:???ロハってなんすか?
>>141
マニュアルがまだ未整備って感じで、結局PHPのソースを見るって感じ・・・
マクロとか、どっちを使えばいいのかわからないものも多いし・・・
まあがんばってみます
0165nobodyさん
2006/11/24(金) 22:44:58ID:???0166nobodyさん
2006/11/25(土) 05:37:25ID:???感じで指摘したら読み間違いは直らないんじゃ、と今更思った
0167nobodyさん
2006/11/25(土) 06:08:17ID:uP/mQvTw0169nobodyさん
2006/11/25(土) 08:04:58ID:???0170スレ専属の回答者
2006/11/25(土) 09:03:10ID:???0172nobodyさん
2006/11/25(土) 12:15:23ID:???出来ないのでしょうか?
class test{
static $a = array();
function add($val = 'aaa'){
$this->a += array('test'=>$val);
print_r($a->layout);
}
}
$test = new test();
$test->add();
$test = new test();
$test->add(5);
0173nobodyさん
2006/11/25(土) 12:22:01ID:???0175nobodyさん
2006/11/25(土) 12:38:54ID:???0176nobodyさん
2006/11/25(土) 12:39:49ID:???0178nobodyさん
2006/11/25(土) 13:08:30ID:???買い物カゴという「モノ」に商品を追加する「手続き」や、追加する個数という「データ」のように
オブジェクト設計としてはどういう扱いなんでしょうか?
0179nobodyさん
2006/11/25(土) 13:10:36ID:???0180nobodyさん
2006/11/25(土) 13:33:04ID:???0181nobodyさん
2006/11/25(土) 13:53:53ID:???<IfModule mod_php4.c>
php_flag display_errors On
</IfModule>
htaccess自体は効いていて、PHPに関する部分だけ無視される…。
サーバにSSHで入ったら、mod_php4.cがなくて、代わりに libphp4.so がある…。
どうしたらいいんでしょうか?
0182nobodyさん
2006/11/25(土) 13:55:38ID:???汎用的で簡単な関数や定数を放り込んでおくのに使うくらいだな。
0183nobodyさん
2006/11/25(土) 14:05:55ID:???0184nobodyさん
2006/11/25(土) 14:08:47ID:???0185181
2006/11/25(土) 14:08:56ID:???<IfModule sapi_apache2.c>でした…。
0187nobodyさん
2006/11/25(土) 14:18:28ID:???クラス内では共有する値が必要な場合にstaticなプロパティを使えばいい
要はグローバル変数でもいいんだけどクラス内でしか使わないから
クラスに押し込んでしまいたいものに使えばいい
0188nobodyさん
2006/11/25(土) 14:36:37ID:NunClOiBYSTとgoogleは、そのままのHTMLを返してくれるので、splitとeregで何とかなりましたが
MSNは中身の無いものを返してくるので、困っています
スレ違いぽいですが、作ったことある方いらっしゃいませんでしょうか
0190nobodyさん
2006/11/25(土) 15:17:37ID:???いいのでしょうか?
for($i=0; i<=29; i++)
{
sqlite_query($db,"INSERT INTO document_word (word{$i+1}) VALUES('{$Value[$i]}');");
}
0191188
2006/11/25(土) 15:17:48ID:???お騒がせしました
0193nobodyさん
2006/11/25(土) 15:26:54ID:???すいません。for($i=0; $i<=29; $i++) でしたか?
しかし、なおしても通らないのですが。。。
ほかに原因はあるでしょうか?
0195nobodyさん
2006/11/25(土) 15:33:29ID:???0199nobodyさん
2006/11/25(土) 16:01:23ID:???(word{$i+1})
って何したいのさ?
・根本的にやりたいに対して処理が間違ってる
・SQL文が間違ってる
ソースから読み取れる情報だとこの程度しか答えられんだろ
0200193
2006/11/25(土) 16:06:09ID:???0201nobodyさん
2006/11/25(土) 16:07:31ID:???0202エスパー
2006/11/25(土) 16:09:44ID:???0204nobodyさん
2006/11/25(土) 16:37:06ID:???/ '´, 、 、 `ヽ、
r´ / l ヽ \ 、ヽ
/ / /l. l、 \ ヽ ', lヽ
/, l. / /´ヽ lヽ ヽ. ! ヽ. ト ヽ、
'´| V '__ヽ. ト\、_',| ',|
| l. ,| | __ \゙、ヽ.__ヽl. ト.|
lハlヘ|´ ` ヽ´ ``〉,^! | !
l\l| | //ィ N 呼びましたか?
| ハ ヽ __ /ハ/ ` _
'′lハn\ `ニ´/! ! ,イ |
_,.-' /ヽ ` - ´ ,ハ\ | |ヽ
_, - ' / | ヽェ、 ' | ヽー、 _ | ト. ヽ
,.、-‐ ´ / | / 〉 | ヽ `⌒.l ヽ',ヽヽヽ
/ ヽ 〈 ,.-|ヽ/ ヽ-/ ヽ/|、 ,〉 | l_! ヽ ゙l
0206nobodyさん
2006/11/25(土) 20:29:47ID:???for($i=0; $i<=29; $i++)
{
sqlite_query($db,"INSERT INTO document_word (word) VALUES('{$Value[$i]}');");
}
これでいいんでない?
(word{$i+1}) ってのは次の行に挿入したいってことと予想。
挿入する場合は、自動的に次の行にはいるので (word{$i+1}) の$i+1はいらない。
0207nobodyさん
2006/11/25(土) 20:32:01ID:???0208nobodyさん
2006/11/25(土) 21:51:05ID:???佐藤,サ行,22歳,サラリーマン
木村,カ行,31歳,自営業
工藤,カ行,18歳自営業
増田,マ行,25歳,サラリーマン
鈴木,サ行,20歳,サラリーマン
須藤,サ行,22歳,自営業
サ行という項目を選択orクリックすると 「佐藤:22歳」、「鈴木:20歳」、「須藤:22歳」
サラリーマンという項目を選択orクリックすると「佐藤」、「増田」、「須藤」
というように条件によって選択的にデータを一部取り出したいのですが、
<?php
$fp = fopen("data.csv", "r");
while ($data = fgetcsv($fp, 10000)) {
foreach ($data as $d) {
print $d . "<br>\n";
}
}
?>
とやったら全部表示されるとこまではいったんですがなかなかやりたいところまでたどり着けません。
ご助言お願いします。
0209nobodyさん
2006/11/25(土) 21:54:15ID:???0210nobodyさん
2006/11/25(土) 21:58:31ID:???0211nobodyさん
2006/11/25(土) 23:34:41ID:GT4xD1Nx全てを読みきるのに10秒程度もかかってしまいます。ブラウザからの同内容のPOST
だとすぐに結果が返ってくるのですが、この違いは何によるものでしょうか。
HTTPのトレースを見る限りでは、ブラウザが特別なことをやっているようには見え
ないのですが...
ちなみにfreadで読んでいるのは本体?のhtmlだけで、そのhtmlから張られている
画像などのリンクは読みません。ブラウザは平行に?それらも読んでいるようなの
になぜPHPよりも格段に速いのでしょうか。
0212nobodyさん
2006/11/25(土) 23:39:22ID:???表紙以外見れ無くないですか?
0214211
2006/11/25(土) 23:57:11ID:GT4xD1Nxfreadのループの開始、終了時の時間差が10秒程度なのです。
PHPのfread関数の作りの問題(=改善不可)でしょうか...
0215nobodyさん
2006/11/26(日) 00:01:48ID:???PHP疑う前に自分の環境とコードを疑え
あとその部分のコード貼れ
0216nobodyさん
2006/11/26(日) 00:04:06ID:???定かではないが、昔のバージョンでは遅かった記憶がある。
0217nobodyさん
2006/11/26(日) 00:05:23ID:???0218211
2006/11/26(日) 00:13:22ID:pPg02glY>>215
該当コードは↓です。正直、参考書からのパクリです(^^;
$socket = fsockopen(
$host
, 80 //port
, $errno
, $errmsg
, 10 //timeout
);
if ($socket == FALSE) {
return '';
}
fwrite($socket, $request);
$response = '';
while (! feof($socket)) {
$response .= fread($socket, 1024*100);
}
>>216
php-5.0.4-win32.zip
のを使ってます。「10日でおぼえるPHP5入門教室」という本に
ついてたCD-ROMに入ってたやつです。OSはXP+SP1です。
CGI、PHPの初心者です。Webサービスとやらに興味を持って
始めました。
0219nobodyさん
2006/11/26(日) 00:16:45ID:???バッファ小さくしてみたら
0220nobodyさん
2006/11/26(日) 00:18:16ID:???何したいのかよくわからんが、web鯖が返すレスポンスを取得するんだったら
GETリクエスト投げないとだめだと思うが。
$request にまともなリクエストヘッダ入ってるか?
0221nobodyさん
2006/11/26(日) 00:19:28ID:???0222211
2006/11/26(日) 00:23:22ID:pPg02glYバッファを小さく?それは考えてなかったので試してみます。
>>220
>>221
取得したいページ(html)は全て読めているのですが、
単にループで時間がかかっているのです。ループの前後で
time()の結果を取得して表示してみらたら10秒弱かかって
ました。
0223nobodyさん
2006/11/26(日) 00:25:20ID:???レスポンスの途中で引っかかってるのか
データ受信後に止まってるのかわからんじゃまいか
0224211
2006/11/26(日) 00:31:45ID:pPg02glYprint strval(time());
while (! feof($socket)) {
$response .= fread($socket, 1024*100);
print strval(time());
}
print strval(time());
とした結果です↓
1164468445
1164468445
1164468445
1164468445
1164468446
1164468446
1164468446
1164468446
1164468446
1164468452
1164468452
6秒かかっていっきに読んでるようです。
じつはfsockopenのタイミングで接続していない?
なわけないですねその前にfwriteしてるし...
0225nobodyさん
2006/11/26(日) 00:41:47ID:???だからそれじゃ分からないんだってばよ
各ループでデータは読み出せてるの?
9回から10回で突然6秒停止してるのが非常に気になるけど
0226nobodyさん
2006/11/26(日) 00:43:47ID:???キャッシュが効いてるとか、よほどでかいテキストでDeflateのメリットが出てるとか、
IEが早いケースはありうるけど超考えにくいね。情報不足で何ともいえないけど。
0227nobodyさん
2006/11/26(日) 00:48:24ID:???5.0.4だとそれっぽいのが見当たらないな。
こういうケースはあるみたいだけど。
http://bugs.php.net/bug.php?id=32688
0228nobodyさん
2006/11/26(日) 00:49:01ID:???これのせいで遅くなっているってことはないか?
$response .= fread($socket, 1024*100);
文字列をどんどん連結していくタイプは、文字列が長くなるにつれて劇的に遅くなる。
配列にプッシュしていく方がはるかに高速なので、試してみては?
$chunks = array();
while (! feof($socket)) {
$chunks[] = fread($socket, 1024*100);
}
$response = implode($chunks);
0229211
2006/11/26(日) 00:53:05ID:pPg02glYループ内のprintで、その時点での全受信データ長も出力してみました。
1164469801
1164469802-->556
1164469802-->4703
1164469802-->8818
1164469802-->12578
1164469802-->16963
1164469802-->20723
1164469802-->28859
1164469808-->28859
1164469808
6秒かかってるのにデータ長が変ってない???
0231nobodyさん
2006/11/26(日) 00:59:53ID:???HTTP1.1でリクエストしてるのに、Closeしてないときとか。
0232nobodyさん
2006/11/26(日) 01:03:02ID:???0233nobodyさん
2006/11/26(日) 01:03:12ID:???content-lengthを返しているなら、適切な分読み込んだ時点で処理を打ち切るように改良してみたら?
0235211,229
2006/11/26(日) 01:12:01ID:pPg02glYなるほど!
試して見ましたが解決しませんでした。
でも書き換えます(リアロケートのロスはあるので)。
アドバイスありがとうございました。
>>233
なるほど!
最後に時間がかかるなら最後までいかなければ良い、と。
柔らか頭ですねぇ(古い表現ですが(^^;)
その線で対応できるかもしれないので色々試してみます。
0236nobodyさん
2006/11/26(日) 01:22:32ID:???相手の出したデータ全部読み終わってるのに
さらに次を読もうとして待ってる典型例に見えるな。
>>233で正解だろう。
0237nobodyさん
2006/11/26(日) 01:24:47ID:???なかなか便利な関数ですよ。
0238nobodyさん
2006/11/26(日) 01:27:43ID:???あるサービスパッケージを使いたくて入れてみたら
エラーでまくりでそれをたどり永田、ファイル名検索して
ダウンロードしてきてを5回ぐらい繰り返して
デレクトリとか湧け分からなくなりながら
死ぬ思いしてやっと動作したのですが、みなさんどうやられてるのですか
簡単な方法教えてください
0239nobodyさん
2006/11/26(日) 01:28:07ID:???0242俺様
2006/11/26(日) 02:42:31ID:???0245nobodyさん
2006/11/26(日) 03:08:41ID:???print_rで配列の中身を出力。
第二引数で出力内容を変数に取り込む。
nl2brで改行コードを書き換えてブラウザ上でも改行して表示する。
0247nobodyさん
2006/11/26(日) 03:19:41ID:???簡単な条件文でも覚えれ。
それができれば、ほとんどなんでもできるようになる。
繰り返し処理を楽にするためにループ関数でも覚えればなおよし。
0249nobodyさん
2006/11/26(日) 03:49:08ID:HPxv5p71<?xml version="1.0" encoding="UTF-8"?>
なんて出力をするんですがこれにPHPが反応してエラーを出してしまいます。
サーバ全体で.htmlもphpとして見るようにしてあるので.htaccessか何かで
特定のディレクトリのみただのhtmlとして見るようにさせる事は可能でしょうか?
0250nobodyさん
2006/11/26(日) 04:44:20ID:???0251nobodyさん
2006/11/26(日) 06:00:46ID:???file_get_contents("sample-1.php?data=ABC");
という風に引数を渡したいのですが、エラーになってしまいます。
エラー内容→「failed to open stream: Invalid argument in C:\Program Files〜」
ちなみに
file_get_contents("sample-1.php");
のようにファイル名だけの場合はエラーは起きませんでした。
どうしたらいいですか?
0252nobodyさん
2006/11/26(日) 06:20:36ID:???file_get_contents("sample-1.php?data=ABC"); ファイル名ではない
file_get_contents("sample-1.php"); 読み込まれるのはsample-1.phpのコード
実行結果を取得したいのであれば
file_get_contents("http://example.com/sample-1.php?data=ABC");
(fopen_wrappersが有効であれば、ファイル名として"URL"を指定する事ができる。)
ただしパフォーマンス的には推奨されない。可能な限りincludeで処理すべき
■ このスレッドは過去ログ倉庫に格納されています