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

くだすれPHP(超初心者用)

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/12(月) 14:06:01ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、 
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 
PHP使いが優しくコメントを返しますが、 
お礼はPHPの布教と初心者の救済をお願いします。 

PHP Home Page 
http://www.php.net/
03423392006/09/09(土) 10:51:23ID:???
>>440でなく>>340でした。
あとsage忘れてました、すみません。
寝ずにやってて頭に血が上りつつあるので
耳鼻科行ってクールダウンしてきます。。。
0343nobodyさん2006/09/09(土) 10:52:14ID:???
windowsかな?

apache2.2.x を使っているなら Apache2.0.5x に変える

どうしてもapache2.2.xを使いたいならPHP5.2.xをさがす
0344nobodyさん2006/09/09(土) 11:32:26ID:38GEQ8NE
>>341
php5apache.dllはApache1.3用のdllだ
でPHP5.1.6(Win32)にはApache2.2用のdllは同梱されていない
0345nobodyさん2006/09/09(土) 12:30:55ID:???
>>377
とんです。前者でいこうかと思います。
ありがとうございました。
0346nobodyさん2006/09/09(土) 12:31:56ID:???
>>337でした、すまそです。
03473392006/09/09(土) 13:09:02ID:???
>>343-344
耳鼻科が思いのほか混雑していて返事遅れてしまいました。
原因はまさにそれですね!
Apacheを変えたらできました。
素早い正確な本当にどうもありがとうございました。
0348nobodyさん2006/09/09(土) 18:29:08ID:???
>素早い正確な本当にどうもありがとう

ひどい日本語だな・・・
0349nobodyさん2006/09/09(土) 21:32:07ID:???
PHPじゃなくて正規表現の話題になってしまいますが・・・
A[=aaa]BC[=bbb]DEF[/=bbb]GH[/=aaa]IJK
などと言う文字を
A<span class="aaa">BC<span class="bbb">DEF</span>GH</span>IJK
という風に正規表現で置換したいんですけれども、
$text = eregi_replace('\[(.+?)\]','<span class="\\1">', $text);
としてもうまく出来ません・・・
どうしたらよいでしょうか。よろしくお願いします。
0350nobodyさん2006/09/09(土) 23:33:18ID:???
>>349
pregならわかるんだが。
0351nobodyさん2006/09/09(土) 23:39:20ID:???
何で実行速度的・セキュリティ的にpreg系に劣るereg系正規表現関数を使うヤツが多いんだ?
マニュアルにも書いてあるだろうに。
0352nobodyさん2006/09/10(日) 01:01:26ID:???
pregですか、、、
あらやる面でeregに勝っているようなので、使ってみることにします。
・・・でもうまく動かないorz
0353nobodyさん2006/09/10(日) 05:38:35ID:???
>>349
\[=(.+?)\]
だろ
0354nobodyさん2006/09/10(日) 12:10:48ID:???
=いらなくね?
0355nobodyさん2006/09/10(日) 14:05:09ID:???
下記のスクリプトを実行してもエラーになります・・・readが未定義って
言っているようですが書いてるし原因が分かりません。
ご指摘をお願いしますorz
PHPのバージョンは 5.1.6 です。
<?php
class Hoge
{
  public function __construct( $path = NULL )
  {
    if( !is_null( $path ) )
    {
      read( $path );
    }
    return;
  }
  public function read( $path = NULL )
  {
    /*!
      ファイル読み込み処理を実装する予定。
    */
    return;
  }
}
$hoge = new Hoge( 'test.txt' );
?>
エラー内容
Fatal error: Call to undefined function read() in N:\sample.php on line 8
03563552006/09/10(日) 14:08:22ID:???
「On line8」は投稿用に改行のみの行を消したためずれています。
read( $path );の行がline8です。
03573552006/09/10(日) 14:09:33ID:???
ゴメンなさいずれてなかったorz
0358nobodyさん2006/09/10(日) 14:09:52ID:???
出来ました。迷惑掛けて申し訳ないです。
0359nobodyさん2006/09/10(日) 14:10:34ID:???
あ、上は349です。すいません。
0360nobodyさん2006/09/10(日) 14:34:34ID:???
>>355
$this->
03613552006/09/10(日) 14:40:55ID:???
>>360
ありがとんorz
0362nobodyさん2006/09/10(日) 15:01:09ID:???
しかし355の場合、メソッドごとに$pathを引数にしなくともメンバ変数を作ってそれを使えばいいんじゃないか?
どっちが良いのか、どちらにすべきかは知らないけど。
誰か詳しい人教えてくれ。
03633552006/09/10(日) 18:49:47ID:???
>>362
>メンバ変数を作ってそれを使えばいいんじゃないか?
ファイルパス(メンバ変数)をglobalにする必要がないと思ったので
newもしくはread時に渡すようにしています。
0364nobodyさん2006/09/10(日) 20:35:58ID:???
>>363
ちょっと待て
メンバ変数のことを勘違いしてないか?
03653632006/09/10(日) 22:43:21ID:???
てっきり下記のようにしたら?ってことだと思ったんだけど。。(´・ω・`;
class Hoge
{
  public $filePath;
/*コンストラクタは省略*/
  public function read()
  {
    /*$this->filePathのファイルを読む*/
    return;
  }
}
$hoge = new Hoge();
$hoge->filePath = 'data.txt';
$hoge->read();

メンバ変数=$filePathのことで、パブリックな$filePathにパスをセットして
read()を呼べば引数にパス渡さなくてすむって意味だと思った。。
03663632006/09/10(日) 22:47:54ID:???
>ファイルパス(メンバ変数)をglobalにする必要がないと思ったので
globalじゃない…publicですたorz
0367nobodyさん2006/09/10(日) 23:49:52ID:???
>>366
んじゃprivateにすれば?
・・・というのは置いといて、
コンストラクタで引数で渡してメンバ変数に代入したり
あるいはファイル名登録用のメソッドを作ったりしてもいいよね。

というか355の方法じゃクラスにしてる意味が全く無くない?
03683662006/09/11(月) 00:35:35ID:???
>>367
>んじゃprivateにすれば?
情報の後出しのようでもうしわけありません。
エラーの確認用のHogeクラスでは省略していますが実際使おうとしている
クラスではprivate $filePathを持たせています。
引数無しでread()を呼んだ場合に$this->filePathのファイルを読み直します。

>コンストラクタで引数で渡してメンバ変数に代入したり
コンストラクタのなかでreadまでやるからreadのなかでメンバ変数に
代入するようにしているのですが、、コンストラクタ(ファイルパスのセット)と
read()は分けた方がいいのでしょうか。

>あるいはファイル名登録用のメソッドを作ったりしてもいいよね。
read()とファイルパスのセットを分けた方が良いのであればそうします。
どちらがよいのでしょうか。
0369nobodyさん2006/09/11(月) 15:31:35ID:9vOMCYca
PHPでformlから値を貰うときに$_POSTを使うのは分かるのですが、
$_POST["hoge"]=$_SESSION["mofu"]; みたいに直接代入という
方法ってプログラム上アリですか?無しですか?

この方法で確かにちゃんと動くけど明らかに使い方は間違ってるような
気がする($_POSTはformからのデータを貰う為のものと思っているから)
のです。
なぜこんなことをしたのかと言うと、前画面で入力したデータを
ターゲットのフォームに初めから入れておきたいが、ターゲット画面で
入力エラーを検知した場合は、そのエラーの箇所を空白にし、他の入力
箇所は保持したいのです。
ターゲット画面でsubmitをしたとき、呼び出される画面はターゲット画面で、
入力にエラーが無い場合はHeaderで次画面に飛ばすのです。


分かりにくい表現で恐縮ですが皆様の考えを教えてください。
0370nobodyさん2006/09/11(月) 16:05:42ID:???
普通にアリでしょ
0371nobodyさん2006/09/11(月) 17:08:12ID:???
>>369
$_POSTに代入っていうのは気持ち悪いね
動くんだろうけど確かに使い方は間違ってる
他の変数に代入するんじゃだめなの?
どうせサニタイズするんだったら$_POSTそのまま使うんじゃないし
0372nobodyさん2006/09/11(月) 18:08:47ID:qCpJYXXZ
画像をリソーズにするには、どうすればいいんですか?
$img = file_get_contents('画像のURL.jpg');
echo imagesx($img);
としてもエラーが出てしまいます。
0373nobodyさん2006/09/11(月) 18:30:00ID:???
それはファイル関数。イメージ関数を使う。
0374nobodyさん2006/09/11(月) 21:31:19ID:9vOMCYca
正規表現でカタカナと数字以外の入力を禁止する処理を作りました。
if(ereg("[^0-9ア-ンー0-9]",$_POST["kanaName"])){
echo "全角カタカナと数字以外禁止";
}

しかしこれだとヤ以降(50音順)がカタカナと認識されません。
よい方法があったら御教授願います。
0375nobodyさん2006/09/11(月) 22:12:57ID:???
×御教授願います。
0376nobodyさん2006/09/12(火) 07:22:51ID:???
>>369
設計を根本的に見直そう。
$_POSTで受け取った値は必ずスクリプト内で
別の変数に代入してから計算なりアウトプットなりするクセをつける。

そんで、エラーを検知した場合は、最初の画面に戻して、
どういうエラーがあったのかを表示して再入力させるべき。
もちろんこの時、エラーがなかった項目については値を保持して、
フォームに既に入力されてる状態にしてあげること。
03773742006/09/12(火) 14:25:02ID:FIxGk3KG
>>375
何か問題でも?
教授=プロフェッサーだけじゃなくて知識等を与える事って意味もあるはず
だから知識を与えて欲しいと願うのはダメ?

それはさておき正規表現の問題が解決できません。
ア-ンーとしてあるのにガ等の濁点やァ等の拗音(だっけ)がマッチしたりしてます。
どうやったら解決できるでしょうか?
0378nobodyさん2006/09/12(火) 14:50:15ID:???
>>374,377
自分のレベルが糞より低い位置にあるんだから、バカに徹して頭を垂れているべきだ。
それが世渡りつーものだ。

で、そんなもん正規表現じゃねー!!恥ずかし過ぎ!つか、笑った。

もし、sjisなら片仮名文字は
\x83[\x40-\x96]

バカだから文字コードの事も考えていないよね?
仮名文字を使って正規表現とか言うのだから。
0379nobodyさん2006/09/12(火) 15:07:00ID:???
>>377
マジレスすると「ご教示」が正しい
0380nobodyさん2006/09/12(火) 15:07:49ID:???
> 仮名文字を使って正規表現とか言うのだから。

そこでmb_eregですよ!
03813742006/09/12(火) 15:10:12ID:FIxGk3KG
>>379
なるほど サンクス 今度からそうするよ。
0382nobodyさん2006/09/12(火) 15:19:09ID:???
他のアドバイスはスルーかよ
0383nobodyさん2006/09/12(火) 15:31:11ID:???
>>374のレベルだとご教示では足りんからご教授というのもあながち間違いではない気がする。
03843742006/09/12(火) 15:57:14ID:FIxGk3KG
>>378
実際に組むとき\x83[\x40-\x96]はカタカナだから
if(!(ereg("^\x83[\x40-\x96]",$_POST["kanaName"]))){
   echo "全角カタカナと数字以外禁止";
}
としてみました。
全角カタカナ以外はこれで入力できなくなりました(数字も入らなくなっちゃったけど)

その後mb_eregを使ってみました。
if(!(mb_ereg("^[0-9ア-ンー0-9]",$_POST["kanaName"]))){
   echo "全角カタカナと数字以外禁止";
}
こうすると数字も弾かれないので後者を使うことにしましたがァィゥェォとヴが弾かれるので
if(!(mb_ereg("^[0-9ア-ンーヴァ-ォ0-9]",$_POST["kanaName"]))){
      echo "全角カタカナと数字以外禁止";
}
これでテストした結果、今のところは期待通りになっていると思います。
ありがとうございました。

>>382 手ぇ遅いので試すまで待って・・・
>>383 正解。
03853822006/09/12(火) 16:12:37ID:???
>>384
いや、せかしてしまってすまない、早漏だった
動いておめでとう
0386nobodyさん2006/09/12(火) 16:18:19ID:???
>>384
オマエ、本物のバカだな基礎とか基本とか全部飛ばしているな
仮名文字を使うなつーてるのにバカだから使うし

$baka = $_POST["kanaName"];
if(!ereg("\x83[\x40-\x96]",$baka) || !ereg("\x82[\x4F-\x58]",$baka)|| !ereg("[0-9]",$baka)) echo '全角カタカナと数字以外禁止';
0387nobodyさん2006/09/12(火) 16:30:22ID:???
>>384
> 仮名文字を使うなつーてるのにバカだから使うし
http://www.php.net/manual/ja/function.mb-ereg.php

調べもしないで偉そうだなおい
0388nobodyさん2006/09/12(火) 16:31:23ID:???
アンカーミスだ
>>386
0389nobodyさん2006/09/12(火) 16:35:02ID:???
>>387
俺も宗教的な理由で仮名文字は使わないな
別におかしくないし、sjis環境なら使わないほうがいいし
それ以前にmbって・・・まーいいや。
0390nobodyさん2006/09/12(火) 17:21:45ID:???
>>386
まぁ超初心者用だし・・・。
これからに期待あげ
0391nobodyさん2006/09/12(火) 17:26:25ID:???
> それ以前にmbって・・・まーいいや。

そこが大事だろ!
おれみたいな初心者に教えてくれよ
0392nobodyさん2006/09/12(火) 17:45:06ID:???
>>391
本当に宗教的な理由としか言い表せないだろう
mdで仮名文字(2バイト文字)が使えるからと安易にいたければ使えばいいかと
もし、自分が宗教的な物に気付けばどこかで仮名文字は捨て去る事となるから
但し、生涯教えて君や初心者を通すなら気付かず使うことととなるだろう
それはそれで良いと思う。
0393nobodyさん2006/09/12(火) 17:47:41ID:???
日ry
03943912006/09/12(火) 17:59:17ID:???
>>392
プログラムコードには極力日本語を含まないようにしてる
理由は単純に気持ち悪いからだ
でも実際にどんな問題がはらんでるかが知りたい

・「マルチバイト」そのものがあまり信用できないからアスキーコードを使う
・PHPのmbまわりが信用ならない
・環境設定によって左右されるようなコードを書くべきでない

いろいろ考えてみた あたってたらそう言ってくれ
あたってなかったら調べてみたりするから
0395nobodyさん2006/09/12(火) 23:13:17ID:???
2バイト文字で問題・・・Windows上で文字コードEUCのスクリプト内で
日本語を含んだパスを指定して「ファイルが読めない。」と悩む私が昔
いました。
0396nobodyさん2006/09/13(水) 02:23:45ID:???
日本語の文字コードが乱立してるのがいけないんだ!!
RFCとかが統一すりゃいいんだ!

そしたら「宗教的」なヲタたちが啓蒙普及活動をしてくれる。
そしてプログラミングにおける日本語の問題も全て解決する。
0397nobodyさん2006/09/13(水) 04:18:32ID:???
宗教的確信を持って「無理」と思う
0398nobodyさん2006/09/13(水) 14:35:51ID:???
何のためのUNICODE
0399nobodyさん2006/09/13(水) 18:06:28ID:fd+xBvUi
pearをインストールしていますが、上手くバージョンアップできません。
参考にしたサイト
http://www.y2sunlight.com/ground/?PHP5.0%2F6.PEAR%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
OSはWindowsXP Pro PHPは5

このサイトに従ってインストールしていたらpearのバージョンが1.3.1になっていました。
しかしサイトの画像で見るとバージョンは1.4.6、最新は1.4.11なので、
pear install pear としてみるとインストール済と言うことでスキップされました。
アンインストールしてからならインストールできるだろうと思い、
pear uninstall pear としたら、pear.bat自体がなくなってしまいました。

最新バージョンの1.4.11をインストールする方法を教えてください。
//pear download-allとするとXML error at line 1, check URL
Invalid return payload: enabling debugging to examine incoming payloadと出るのは仕様ですか?
04003992006/09/13(水) 18:40:21ID:fd+xBvUi
PHPのバージョンをあげたら1.4.9になったのでこれで良しとします。
騒がせて巣万個
0401nobodyさん2006/09/13(水) 19:37:08ID:ny0rhUNk
よくやった
0402nobodyさん2006/09/13(水) 19:38:45ID:???
ははは
0403nobodyさん2006/09/13(水) 19:40:07ID:???
てst
0404nobodyさん2006/09/13(水) 20:15:13ID:qvwVE6Hq
質問です。

例えば
$a が 2ちゃんねる だったら、
あいうえお
かきくけこ
さしすせそ

$b が 3ちゃんねる だったら
いろはに
ほへと
ちりぬる

って表示するようにして、

$a=2ちゃんねる $b=3ちゃんねる だったら
あいうえお いろはに
かきくけこ ほへと
さしすせそ ちりぬる

と表示するようにしたいんですが、
どのようにすればいいでしょうか?
0405nobodyさん2006/09/13(水) 20:47:12ID:???
>>404
if ($a == "2ちゃんねる" && $b == "3ちゃんねる") {
echo "あいうえお いろはに" . "<br />\n";
echo "かきくけこ ほへと" . "<br />\n";
echo "さしすせそ ちりぬる" . "<br />\n";
} elseif ($a == "2ちゃんねる") { // A
echo "あいうえお" . "<br />\n";
echo "かきくけこ" . "<br />\n";
echo "さしすせそ" . "<br />\n";
} elseif ($b == "3ちゃんねる") { // B
echo "いろはに" . "<br />\n";
echo "ほへと" . "<br />\n";
echo "ちりぬる" . "<br />\n";
}

こうではなくてAの出力とBの出力を合成して表示したいという意味であれば、

$str['a'] = array("あいうえお", "かきくけこ", "さしすせそ");
$str['b'] = array("いろはに", "ほへと", "ちりぬる");

if ($a == "2ちゃんねる" && $b == "3ちゃんねる") {
for ($n = 0; $n < 3; $n++) { echo $str['a'][$n] . " " . $str['b'][$n] . "<br />\n"; }
} elseif ($a == "2ちゃんねる") {
for ($n = 0; $n < 3; $n++) { echo $str['b'][$n] . "<br />\n"; }
} elseif ($b == "3ちゃんねる") {
for ($n = 0; $n < 3; $n++) { echo $str['a'][$n] . "<br />\n"; }
}

といった感じに配列でも使わないと多少メンドイことになる。
0406nobodyさん2006/09/14(木) 04:55:29ID:w1P9D6Nk
ヒント配列
0407nobodyさん2006/09/14(木) 13:39:34ID:RcWvZ0xR
Apache2.0.54
PHP5.0.2
pear1.3.1を使っています。

<?
include_once "Mail.php";
echo "メール送信テスト<br>";
$recipients = 'XXX@XXX.jp';
$headers['From'] = 'test@test.test';
$headers['To'] = 'XXXa@XXX.jp';
$headers['Subject'] = 'テストサブジェクト';
$body = "ようこそバーボンハウスへ\n この1杯は奢りだからまず飲んで落ち着いて欲しい\n  ごめん、またなんだ。\n";
$mail_object =& Mail::factory('mail');
$result = $mail_object->send($recipients, $headers, $body);
if (PEAR::isError($result)) {
 echo"DEAD END";
die($result->getMessage());
}
echo $result;
?>
としたところ、メールは送受信できるのですが、$headers['From']と$headers['Subject']の内容が表示
されません。
メール送信が出来るならPEARやPHP、Apacheの設定ではないと思うのですが・・・。
どうやったら$headers['From']と$headers['Subject']の内容が表示できるでしょうか?
0408nobodyさん2006/09/14(木) 13:41:58ID:RcWvZ0xR
追記
$bodyは表示できます。

PHP5.1だとちゃんと表示できるのですがPHP.iniのExtensionのMySQLコメントアウトをはずしても
PHP.infoでMySQLが使えるようになってないので断念しました。
0409nobodyさん2006/09/14(木) 13:46:31ID:???
PHPにwantarray(perl関数)と同じ物ってないですか?
探しているのですが、見あたらなくて
0410nobodyさん2006/09/14(木) 17:45:56ID:pPxPgU+d
PHPスレで質問していいのか迷いましたが・・・

<?php

$cmd=$_POST['cmd'];

if($cmd!=null)
echo $cmd;

?>
こんなPHPのソースがあって、
ここにtelnetで接続し

POST /index.php HTTP/1.0
Content-Length: 5

cmd=1

と言うテキストファイルを送信しました。
確かに200OKと正常にヘッダが返ってきたのですが、
帰ってきて欲しいのは、1と言う文字です。
それが帰ってこないのですが、どうしてでしょうか?
HTTP関連も調べたのですが、何が原因かわかりません。
0411nobodyさん2006/09/14(木) 17:59:41ID:iFbFyD2f
PDOにもPEAR::DBの「autoExecute」みたいに
自動的にSQL文を組み立ててくれる機能はありますか?
0412nobodyさん2006/09/14(木) 20:07:25ID:???
> if($cmd!=null)
if($cmd!==null)
0413nobodyさん2006/09/14(木) 21:18:02ID:???
>>407
PEAR::Mailを使ったことがないので内部で処理してないとは言い切れないけど、
マルチバイト文字列(日本語とか)突っ込むときは、エンコーディングが必要なのでは?

あと、PEARに関する質問は
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/
がいいかな。
0414nobodyさん2006/09/15(金) 09:18:46ID:???
>>410
キミはシステムを乗っ取られたいのか?
0415nobodyさん2006/09/15(金) 11:24:29ID:???
>>410
ヘッダに返ってくるのは仕様です。
なんらおかしくありません。
0416nobodyさん2006/09/15(金) 18:42:11ID:???
>>410はヘッダ”しか”帰ってこないから困ってるんだろ。
ちなみに、それは、
Lengthだけじゃなくて
ContentType: application/x-www-form-urlencoded
を送信してないから。
これで、とりあえずは1と帰ってくるよ。
0417nobodyさん2006/09/16(土) 01:11:20ID:???
>>416
そうじゃなくて、>>410が求めてるのは単純にechoの結果(標準出力)だろ。
0418帰ってきた42歳2006/09/16(土) 01:15:26ID:yXjwnh9n
Smarty を使って フォームを作りましたが、config.phpの指定には、

m01 => array(label => 'お名前', formtype => 'text', opt => array('size' => '40', 'maxlength' => '220', 'style' => 'ime-mode:inactive')),

という感じであるのですが、ここを自動的に日本語入力に指定することはできないものですか?
テンプレートでいじるのでしょうか?
0419帰ってきた42歳2006/09/16(土) 01:16:27ID:yXjwnh9n
わかりました。
今、冷静に見て… すみません。 ime-mode が i-modeに見えていました
0420nobodyさん2006/09/16(土) 19:47:58ID:???
サーバ"から"ファイルをPOSTでアップロードするコードを書いてるんですけど
うまくアップロードできません。

$handle = fopen ("fugahoge.tgz", "r");
while (!feof ($handle)) {
$buffer = fgets($handle, 4096);
$dataf.= $buffer;
}
fclose ($handle);

$curl = curl_init ($posturl);
curl_setopt ($curl, CURLOPT_POST, 1);
curl_setopt ($curl, CURLOPT_POSTFIELDS,"&filename=".urlencode($dataf));
curl_exec ($curl);
curl_close ($curl);
0421nobodyさん2006/09/16(土) 19:56:59ID:???
途中で投稿しちゃった。
こう書いたのですがうまくいきません。
おしえてください
0422nobodyさん2006/09/16(土) 21:34:41ID:???
>>420
PEARのHTTP_Requestをつかったら?
0423nobodyさん2006/09/17(日) 04:45:08ID:7OIeS9Or
echo "書き込み";
$fp = fopen('aaa.txt','w');
fwrite($fp,$f_raw);
fclose($fp);

こんな単純な書き込みなのですが、
何故かaaa.txtと言うファイルが書き出されません。
ルートディレクトリにもカレントディレクトリにもありません。
なにかphp.iniに設定すべき所があるのでしょうか?
それとも、プログラムミスなのでしょうか?
0424nobodyさん2006/09/17(日) 04:56:14ID:???
fopenに失敗した場合は、E_WARNING レベルのエラーが出る筈なんだが。
0425nobodyさん2006/09/17(日) 05:48:32ID:???
助けてください。。。
とある理由でPOSTで数M(10M以下)のデータを送り
fopen、fwriteで書き出しするプログラムなんですが・・・。
完了に2分以上掛かる上、UNIXマシンでtopコマンドうつとCPUは80%くらいを食っています。。。

こんなもんなんでしょうか?
転送自体はローカルでテストしてるんで、問題ないんですが・・・・。

それとも、メモリが少ない設定になってる為等でしょうか?
どちらにせよ。POSTされた数Mのデータを高速にファイルに書き出す方法を探しています。
よろしくお願いします。
0426nobodyさん2006/09/17(日) 06:07:51ID:???
http://ns1.php.gr.jp/pipermail/php-users/2004-April/021685.html

確かにたまにこういう書き込みを見る。
PHPのfopen()やfwrite()が遅いのは、やっぱしょうがないのかな・・・

#にしても、遅すぎだとは思うけど
0427えがみボンバイエイ2006/09/17(日) 07:08:51ID:???
<?php
require_once("XML/RSS.php");
$rss=new XML_RSS("http://manabekawori.cocolog-nifty.com/blog/index.rdf";);
$rss->parse();
?>
<h2><?php print(mb_convert_encoding( $rss->channels['title'],"EUC-JP","auto")); ?>
</h2>
<?php foreach($rss->items as $item){ ?>
<?php print(date(($item['dc:date']))) ?> <a href="<?php print($item['link']); ?>" target="_blank">
<?php print(mb_convert_encoding($item['title'],"EUC-JP","auto")); ?>
</a><br>
<?php }
?>


と書くと
2006-09-17JST00:41:11+09:00  夫婦別姓制度はまだなのか
2006-09-13JST22:46:23+09:00  おやすみ投稿か
2006-09-08JST00:08:49+09:00  カッチカチやぞ
2006-08-31JST22:40:11+09:00  エロかわ…?

言う風に表示されるのですが、
JST00:41:11+09:00の部分を削りたいのですが、
どうすれば宜しいか分かる方いらっしゃいましたら宜しければ教えていただけると幸いです。
0428nobodyさん2006/09/17(日) 13:55:08ID:???
explodeでJを指定して[0]をprintしてやればいいかも。
0429nobodyさん2006/09/17(日) 15:59:12ID:X/s21ZZr
すみません、Linux上でfindを実施してphpの拡張子がhitした場合に、
行頭に#!/usr/bin/php5を一括挿入するスクリプトを
作成したいと思いますが、どのように書けばよろしいでしょうか?

--スクリプト(パイプで渡せばいいと考えましたがこの先はどうした方がよいでしょうか?)
find * -name *.php |
0430nobodyさん2006/09/17(日) 17:19:12ID:???
こんな感じで出来なかったっけ?
出来なかったらゴメン
% php < `find * name php `
0431nobodyさん2006/09/18(月) 02:05:26ID:???
Sqliteで扱うデータで、デスク容量をカウントするのがあって
ギガとかになるので、バイト単位だと
1073741824B=1Gなので、INTEGERだと格納出来ません。
こういう用途だと、どうすればいいのでしょうか?
SQiteは型非依存だと聞いたのですが、型を指定しなければ良いと言う事でしょうか?
0432nobodyさん2006/09/18(月) 02:18:16ID:???
SQLiteスレ行けといいたい所だが、
バイト単位でだと、扱うのはあまり好ましくないから。
どうせギガレベルなら、メガ単位で管理すれば?
0433nobodyさん2006/09/18(月) 03:03:17ID:???
細かくデータ量を管理したいなら

class DataSize{
  private digitGigaByte;
  private digitMegaByte;
  private digitKiloByte;
  private digitByte;

/* 以下メソッド定義 */
};

とかやって自前のクラスと操作メソッド作ったほうがいいんでない?
0434nobodyさん2006/09/18(月) 05:50:35ID:0wioqDk7
質問です
mkdir('dir', '0600');
など、パーミッションを指定できるメソッドで作成したファイルやディレクトリが、この設定が反映されません。
具体的には、上の例の場合、411のパーミッションのdirと言うディレクトリが出来上がります。
何か設定すべきところがあるのでしょうか?
一切の書き込みが出来ないので、何も出来ません。。。
0435nobodyさん2006/09/18(月) 14:19:10ID:???
mkdir('dir', 0600);
だめだったらごめんね
0436nobodyさん2006/09/19(火) 01:37:52ID:???
空行を含んだファイルを

$fi = file("aaa.dat");

で読み込んでから、
空行を抜いて表示したりしたいのですが、
やりかたがわかりません。

for ($i=0;$i<9;$i++) {
if ($fi[$i] != "" ) { print "$fi[$i]<br>";}
}

「""」のところを「\n」で試したりしましたがだめでした。
どうすれば良いのでしょうか。
0437nobodyさん2006/09/19(火) 01:51:17ID:???
>>436
$fi = array_map('rtrim',file('aaa.dat'));
for ($i=0;$i<9;$i++) {
    if ($fi[$i] != "" ) { print "$fi[$i]<br>";}
}
0438nobodyさん2006/09/19(火) 05:24:38ID:???
っていうか、そういうメソッドがあったような・・・
0439nobodyさん2006/09/19(火) 05:45:57ID:???
>>436
$fi = file('aaa.dat');

foreach($fi as $value){
  if(trim($fi) == '') continue;
  出力処理
}

>>438
一々突っ込むほどのことではないかも知らんが、メソッドは一般にクラスのメンバ関数のことだと思うぞ。
0440nobodyさん2006/09/19(火) 05:46:44ID:???
if(trim($fi) == '') continue; → if(trim($value) == '') continue;

な、勿論。
0441nobodyさん2006/09/20(水) 09:19:03ID:HL0PU+Ol
質問お願いします。

MySQLに予め登録したテキストを呼び出してmb_send_mailで配信というのを
やりたいんですが、改行なしになってしまいます。
改行を入れたい所に\nを入れてDBに登録したんですが、うまくいきません。
何を使えば改行が入るでしょうか?
■ このスレッドは過去ログ倉庫に格納されています