【PHP】質問スレッドpart26【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/12/21 22:34:55ID:???0209nobodyさん
05/01/03 14:26:15ID:1pWPK0qtRDF API for PHP
データベース保存周りがいまいちわからんのです。
0210nobodyさん
05/01/03 15:23:09ID:???〜と言うように本に書いてあったんですが、うまく動きません。
〜したいのですが、〜としてもうまく動きません。
〜で言う○○と同じような動作をさせたいのですが・・・
以上の様な、知ってる人から見ればバカみたいな質問は↓。
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
で、具体的なPHPのコードに対する動作不良、エラーが出てしまうなどはここ。
0211nobodyさん
05/01/03 16:00:35ID:???0212nobodyさん
05/01/03 18:53:13ID:KT+/g2GT特定の社名が出てきたらあらかじめ別ファイルに設定しておいた
リンク先に勝手にリンクを貼ってくれるようなことって出来ないでしょうか?
そうすれば仮にある会社のリンク先が変更になっても
読み込んでいる元ファイルだけを変更すれば全てに反映されると思います。
0214sage
05/01/03 19:42:11ID:KSsMVUlGhttp://pc5.2ch.net/test/read.cgi/php/1099322141/ より飛ばされてまいりました。
php+mysql鯖にて下記のようなソースでUPされたファイルとデーターベースに格納されている
文字列で重複削除をかけるために$ngにmysqlの結果セットを格納していきたいのですが
今のfor文ですと時間がかかりすぎてしまってこまっております。
何か一発で添字配列$ngに格納する方法ありませんでしょうか?
$rs="select id from ng";
$rt=mysql_num_rows($rs);
for($i=0;$i<$rt;$i++){
$ng[$i]=mysql_result($rs,$i,'id');
}
$ok=array_diff($up,$ng);
0215nobodyさん
05/01/03 20:04:43ID:???Web制作板から来た人かねぇ。
「出来る 出来ない」で聞かれたら「出来る」ってことになるけど、
既存のCGIでそういうものがあるかどうかって聞かれると
「どうだろうねぇ。探しても無いなら無いんじゃないの?」ってことになるかなぁ。
内容的にはかなり簡単な部類に入るので自分で作ってみるのもいいかと。
>>214
やりたい事が見えてこないから適当に答えるけど、それはSQLで解決できないような事なの?
0216214
05/01/03 20:49:00ID:???まわすことが非常に効率悪いのではないかと思いまして。
phpの関数で何か非常に効率のいいものがあったら教えていただきたいと思った次第です。
UPするtextファイルが大体10万件程度、ngデータとして
データベースに格納されているデータがおよそ1000万件(ngデータはtxtファイルとして保存もしてあります)。
その二つの間で重複削除をかけてngデータとして所持してない文字列のみを出力したいのですが
下記の形式を試し、あまりに時間がかかりすぎるためngのデータを配列に読み込みarray_diff
により差分配列を作成してからそれをファイルに出力するのがより高速かと思い試してみようと思った次第です。
そんなんよりもっと早い方法ご存知の方いらっしゃいましたらぜひとも教えていただきたいです。
$fl_name=$FILES['fl']['tmp_name']
$array_file=file($fl_name);
for($i=0;$i<count($array_file);$i++) //count($array_file)は10万程度
{
$rs=mysql_query("select *from ng where id='".$array_file[$i]."'");
$rt=mysql_num_rows($rs);
if($rt==0){fwrite($fl,$array_file[$i]);}
}
0217212
05/01/03 21:36:15ID:???> Web制作板から来た人かねぇ。
そうです。web制作板から島流しにあってここに来ました。
> 内容的にはかなり簡単な部類に入るので自分で作ってみるのもいいかと。
は、はぁ(;´Д`)
そうですか・・・
PHPで本格プログラムはしたこと無いのですが
似たようなプログラムを書いた人がいないとあっては
ここは一つ自力で解決せざるを得ないですか・・・・・・
0219nobodyさん
05/01/03 21:50:21ID:???file()、preg_split()、preg_match()、preg_replace()くらいかな使うのは。ガムバッテネ。
0220nobodyさん
05/01/03 21:52:17ID:d8mbNFJzんでapache再起動させたら
「mod_php4.cがねぇよ」
とか言われたんで、add module mod_php4.cコメントアウトしたらエラー吐かなくなって
見たところ正常に動いてるんですわ。
何これ、4.3.10からいらなくなったの?
0221217
05/01/03 21:58:21ID:???> file()、preg_split()、preg_match()、preg_replace()くらいかな
ラ、ラジャー(;´Д`)デス
0222nobodyさん
05/01/03 22:00:05ID:???DBに任した方が速そう。
UPされたデータをテンポラリテーブルに全てぶち込む。
SELECT word FROM TempTable WHERE NOT EXISTS (SELECT * FROM ngTable WHERE ngTable.ng=TempTable.word);
で得たwordをファイルに書き出す。ファイル<->Table間のやり取りが容易(SQLにCOPYなどがある)なら、
DBで直接ファイルを吐き出すのもアリかな。
0225nobodyさん
05/01/04 23:55:41ID:AGCbPn2Cしない場合なにか違いはあるのでしょうか?
0226nobodyさん
05/01/05 00:08:14ID:???ホームページからリンクを貼ってダウンロードできるようにしています。
ところが自鯖は24時間立ち上げっぱなしというわけでは無いので
時間帯によってはリンクが切れているときもあります。
そこでPHPを使ってリンクがアクティブの時はダウンロード可能にし、
自鯖をダウンさせているときはダウンロードできない旨を表示させたいのですが
可能でしょうか?できれば1〜3秒以内にそれらの判定をして表示させたいです。
0227nobodyさん
05/01/05 00:21:18ID:???file_get_contentsとかfsockopenとかでアクセスしてみたら?
タイムアウトとか設定できた希ガス
0228nobodyさん
05/01/05 00:27:11ID:???って一言書けばすむ話では?
0229226
05/01/05 01:18:25ID:???> 「ダウンロードできなかったら鯖落ちてますんで後日どうぞ」
> って一言書けばすむ話では?
まぁそれが一番簡単なんですが小さめのファイルは無料鯖にうpしているので
ダウンロードできるファイルと出来ないファイルが混在しているんですね。
それでとあるリンクはダウンロードできて他のリンクは切れているという状況は
ビジターの方に混乱させてしまうかと思いましてリンクの表示時に判別したいと
思ったわけです。
>>227
> file_get_contentsとかfsockopenとかでアクセスしてみたら?
なるほど。リンクが生きていればそのまま、一定時間以上かかるか
リンクが切れていれば鯖ダウンと判別すればいいんですね。
自鯖にファイルサイズが小さいダミーファイルを置いて、ページを読み込むたびに
そのダミーファイルにアクセスしてできなければ鯖ダウンと判別すればよさそうですね。
自鯖内の各ファイルにアクセスして判別してもいいですがそれをやると
判定時間が異様にかかりそうです。
0230nobodyさん
05/01/05 01:19:17ID:???<img name="image1" src="ttp://自鯖/now_avail.png" onError="image1.src='now_unavail.png';">
0231nobodyさん
05/01/05 01:23:20ID:???〜って出来ますか?
〜と言うように本に書いてあったんですが、うまく動きません。
〜したいのですが、〜としてもうまく動きません。
〜で言う○○と同じような動作をさせたいのですが・・・
以上の様な、知ってる人から見ればバカみたいな質問は↓。
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
で、具体的なPHPのコードに対する動作不良、エラーが出てしまうなどはここ。
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0232226
05/01/05 01:36:07ID:???なるほど。JavaScriptでも可能ですね。
もしかしたらPHPよりJavaScriptで実装した方が動作速度は速いかもしれませんね。
>>231
了解です。以降「くだらねぇ〜」に以降いたします。
0234nobodyさん
05/01/05 08:16:36ID:vMHNCGxM*.html 内に書かれた、{ }って文法的になになんでしょうか?
{ }内がphpプログラムで作られているのはわかったのですが・・
body1.html
---------------
<div>
<span>{KEY}</span>
{DEFN}
</div>
--------------
それとKEYに対して処理したく
body1.html内に例えば
<a href="http://www.******/***?keyword={ mb_convert_encoding(KEY)} ・・・
なんて、記述できないのでしょうか?
0235nobodyさん
05/01/05 08:29:23ID:???0236nobodyさん
05/01/05 09:22:00ID:???0237214
05/01/05 10:21:35ID:???SELECT word FROM TempTable WHERE NOT EXISTS (SELECT * FROM ngTable WHERE ngTable.ng=TempTable.word);
上記のクエリをmysqlにぶち込んでみたところsomething is wrong in your syntax : EXISTS (SELECT * FROM ngTable WHERE ngTable.ng=TempTable.word); 付近と出てしまいました
これはmysqlに対する副問い合わせができていないのでしょうか。解決方法をご教授ください。
ちなみにmysqlは4ver.0.18です。
0238nobodyさん
05/01/05 10:49:25ID:???http://dev.mysql.com/doc/mysql/ja/Rewriting_subqueries.html
0239nobodyさん
05/01/05 11:42:05ID:k/OgHA/yRSS情報をmovabletypeへ投稿できるスクリプトないですか?
SPIDERING HACKSにはあるが、PERLなんだよね・・・
PHPはないかな?
0240nobodyさん
05/01/05 12:14:31ID:???単なる文字。
pearのHTML_Template_Flexyなんかを使うと、
変数の置き換え場所の指定に{}が使われることもある。
どこかのページや本を参考にしてると思うけど、
最初から全部見た方が良いでしょう。
0242nobodyさん
05/01/05 14:21:31ID:pRFKvcsaこのときに、XML のデータの中におそらく文字化けでコントロールコードが入ってしまっているときに
その行で解析をストップしてしまうようなのです。
日本語は正しく通ります。(shift-jis の XML を読んでいます)
何か回避方法はありますでしょうか。
0244nobodyさん
05/01/05 14:26:01ID:pRFKvcsa$p = &new myParser();
$p->setInputFile($url);
$p->parse();
というように、URLから直接読んでいるので
チェックするには読んだデータそのままを扱わないといけないのですが、
それだとクラスの一部を書き換えないといけないのでしょうか
0245226
05/01/05 14:32:22ID:???> fsockopenとかでアクセスしてみたら?
> タイムアウトとか設定できた希ガス
具体的な話なのでまだこのスレの範疇かと思いお聞きします。
fsockopenでリンクが生きているか死んでいるかを判断するとき
タイムアウトの時間はどのくらいに設定するのが現実的でしょうか?
<?php
$fp = fsockopen ("www.yapoo.co.jp", 80, $errno, $errstr, 30);
if(!$fp) {
echo "cannot connect<br>\n";
} else {
echo "connection established<br>\n";
}
?>
最後の”30”という部分がタイムアウトと判断するまでの秒数だそうで
この値が大きくなればなるほどページの読み込みにかかる時間は増えていきます。
逆に小さすぎると読めるページでもその時間内に読み込めないと
判断されてしまうこともあるようです。
ここらへんの現実的な時間設定はどのくらいでしょうか?
0246nobodyさん
05/01/05 15:13:16ID:PjWbP+V8アプリケーションは他に何がありますか?
ご存知の方がいっらっしゃいましたらご教授ください。
0247nobodyさん
05/01/05 15:20:24ID:???てかスレ違いって言われるだろうから、早く帰りな。
0250246
05/01/05 15:46:24ID:PjWbP+V8どこの板にいくのがいいの?
0251nobodyさん
05/01/05 15:50:14ID:???で、fsockopenのtimeoutはコネクト可否の判定に使うんじゃなかったっけ?
ページサイズに関係してくる方は、socket_set_timeout()かと。
0252nobodyさん
05/01/05 15:52:47ID:???この板なら
http://pc5.2ch.net/test/read.cgi/php/1099322141/
Web制作板なら
http://pc5.2ch.net/test/read.cgi/hp/1097762828/
あたりかな。
0253226
05/01/05 17:37:07ID:???> 8秒
ヒィ----(;´Д`)
結構長いんですね。
プログラムの組み方が悪いのか>>245のPHPスクリプトを使うと
そのページ全体の表示に5秒あるいは8秒かかるようになって
しまうんですよね?
その他の画像や文章の部分は通常と同じ速度で表示され、
鯖の生死によって使い分ける画像の部分だけ5〜8秒表示に
時間を要す、なら問題ないとは思うのですが・・・
0254nobodyさん
05/01/05 19:34:11ID:???別にタイムアウト30秒に指定しても、
1秒でレスポンスが帰ってくれば、
1秒で完了するじゃん。
レスポンスを返す処理が長いのが問題であって、
タイムアウト設定の問題じゃないと思うけど??
0256nobodyさん
05/01/05 19:49:47ID:???すまん。面倒だった。
反省してログ読み直し。
完璧にやりたかったら、
ステータスとして管理するしかないんじゃないかな?
自サーバーを落とすときは、
無料サーバーに「落とすよー」リクエストを送る。
自サーバーを起動したときは、
無料サーバーに「立ち上がったよー」リクエストを送る。
無料サーバー側のスクリプトで、その受け口を作る。
0257nobodyさん
05/01/05 19:57:15ID:???fsockopenのタイムアウト設定を1秒とかにしてみれば?
socket_set_timeoutは30秒とかで。
0259234
05/01/05 21:13:42ID:???結局、body1.htmlに書くのを止めて、
phpプログラム内で新たに{KEY2}を作りました。
0261nobodyさん
05/01/06 15:47:16ID:wyAV9mPsHTMLのフォームに<form action="対象URL" method="post">でなら出来るのですが
(サブミットボタンを押して、対象のトラックバックURLにデータを送信する)
手動でボタンを押すのではなく、スクリプトを実行すると送信できるように
するにはどうすればいいのでしょうか?
0262nobodyさん
05/01/06 15:56:46ID:???スクリプトの中でfsockopenとかを使ってHTTPのpostを実行すりゃいい。
参照すべきものは、マニュアルのfsockopenの項、RFC 1945,2068,2616。
0264nobodyさん
05/01/07 10:07:45ID:pxQ1ftA8とページ移動するとしてCからBに「ブラウザの戻る」を
できないようにするにはどうすれば良いでしょうか?
javaを使用する以外でお願いします。
0266264
05/01/07 11:18:38ID:pxQ1ftA8ありがとう!解決できました
0267264
05/01/07 12:55:43ID:pxQ1ftA8CからBに戻ったときCで指定したセッション変数を参照して
Cへheaderで戻るようにしたんですが戻ったときにブラウザの戻る
の履歴を見たときBのファイル名がありません。
Cで「ブラウザで戻る」→Bでheader→C
を繰り返しできるようにしたいのですが知恵をください
0268nobodyさん
05/01/07 13:51:11ID:???スレ違い
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
0270226
05/01/07 14:26:05ID:???検出して、それに応じてアイコンの絵を選択するようにしました。
<?php
$fp = @fsockopen ("mysite.com", 80, $errno, $errstr, 0.5);
if(!$fp) {
$icon = "error.gif";
} else {
$icon = "ok.gif";
}
?>
その判断は0.5秒で行うようにしたのですが、それでもページを開くときに
ワンテンポ遅れる感じがします。アイコンとは関係の無い文章の部分だけ
先に表示することはできないでしょうか?そうすればページを開くときに
ストレスも無いかと思うのですが・・・。
0271nobodyさん
05/01/07 15:21:39ID:???非常に逃げな選択だが、iframeを使うと出来るかもね。
俺はそれをやるくらいなら、ワンテンポ遅れても…良いと判断する。たぶん。
0272nobodyさん
05/01/07 20:15:43ID:???ロードできるまではjavascriptで「チェック中」とか出しとけば完璧。
0273226
05/01/07 20:45:20ID:???>>270のようなプログラムを関数かなにかにし、imgタグの中で呼び出すという
ことでしょうか?そうすると一つ目のimgタグの前のパートまでのhtmlは
瞬時に呼び出されるということですね?
※htmlの先頭部分にimgタグがあればあまり速度的には変わらないかもしれません。
0274nobodyさん
05/01/07 20:59:36ID:???Content-typeちゃんとだして。ブラウザにもよるのかもしれないけどhtmlは真っ先にでるはず。
0275nobodyさん
05/01/07 21:07:29ID:???0276nobodyさん
05/01/07 21:12:54ID:???テーブルの中身を全部とれないと表示できないダメブラウザがあるし。
0277nobodyさん
05/01/07 21:28:41ID:???0279nobodyさん
05/01/08 03:45:29ID:???0280226
05/01/08 10:54:23ID:???今までの議論は自鯖が動いているか否かで表示する画像ファイルを
変更する方法について議論していましたが、そこから一歩進めて自鯖が
動いているか否かで
・ <a href="aaa.com"><img src="ON.gif"></a>
・ <img src="OFF.gif">
のそれぞれに割り振ることはできるでしょうか?
今までの議論だとhtmlとimageは別スレッドで並列に取得できるとの
ことでしたが、今回は一方に画像にリンクを貼っているのでhtmlと
imageを切り離し、html部分だけを先に表示出来るかが疑問です。
0282nobodyさん
05/01/08 11:21:11ID:???だからさ、一番最初に言われたとおりに、
自鯖からレン鯖へ定期的にリクエストを送って、
レン鯖で常に自鯖の稼動状態を保持しておきゃぁいいじゃねぇかよ!
最新の自鯖からのリクエスト時間を現時間、および前回リクエスト時間と比較して、
自鯖で設定しているリクエスト間隔を大きく上回っていたら、自鯖死亡。
たったこれだけのことを、なんでそう難しく考えるんだ?
0283nobodyさん
05/01/08 11:24:31ID:???どっかいけや>>280。
ロジック見つけて、PHPでの具体的な実現方法になったら
また来いや
来ても、シカトだが(w
0285nobodyさん
05/01/09 01:49:34ID:QFmRB+Xymysql_fetch_arrayでパラメーターが間違っているとエラーをはきます。
どなたか判る方ご教授ください。
$sql="create table ".$passwd." (num INT UNSIGNED auto_increment not null,address varchar(100) not nukk,primary key(num))auto_increment=1";
mysql_db_query("max",$sql);
for($i=0;$i<$num;$i++)
{
$array_file[$i]=strtolower($array_file[$i]);
$array_file[$i]=mb_convert_encoding($array_file[$i],"Shift_JIS","EUC");
$array_file[$i]=mb_convert_kana($array_file[$i],"rnaskh");
$sql="insert into ".$passwd." (address) values('".$array_file[$i]."')"; このクエリは通る
mysql_db_query("max",$sql);
}
// $sql0="select address from ".$passwd." where not exists(select address from ngaddress where ngaddress.address=".$passwd.".address)";
// $sql0="select address from ngaddress";
$sql0="select address from ".$passwd." order by address";
$rs0=mysql_db_query("max","select address from ".$passwd); このクエリが通らない
while($ok=mysql_fetch_array($rs0)){print($ok."<br>");}
$sql3="drop table ".$passwd;
mysql_db_query("max",$sql3);
0287nobodyさん
05/01/09 01:58:51ID:???クエリが通らない行では、実際に送信しているクエリはどういう風になっているか見てみた?
print("select address from ".$passwd); とかで
0288226
05/01/09 02:00:22ID:???> >>274 がその答えを出してくれているのだが。
> 画像リンクなんかはまた別のリクエストなんです
そうしますと
<? (鯖死亡なら何も無し、生きていれば'<a href="misite.com/file_name/">'を表示) ?>
<img src="status.php">
<? (鯖死亡なら何も無し、生きていれば'</a>'を表示) ?>
とすればよろしいでしょうか(´・ω・`)?
0289nobodyさん
05/01/09 02:11:09ID:???--dl_check.php--
<?php
if 自鯖 === 生きてる
header("Location : http://xxx/download.jpg");
else
header("Location : http://xxx/cannot_dl.jpg");
?>
0290nobodyさん
05/01/09 05:40:54ID:5gC8scbgttp://www.mt312.com/の写メール対応掲示板を設置してみたのですが
imgの読み込み許可してください。とエラーがでます。
色々設定を変えてみたのですが駄目でした。
【使用鯖】携帯用XREA
【ディレクトリ構造】配布元に書いてあるとおりにしてます。
/public_html/img
【パーミッション】配布元に書いてあるとおりにimgフォルダを707に設定
よろしくお願いします。
0294226
05/01/09 14:46:19ID:???すいません。>>280で重要なことを言うのを忘れていたので誤解を生じて
しまったようです(´・ω・`)
PHPを使用して実現したいことは
・自鯖が生きていれば「ダウンロードアイコン」を表示して、それをクリックすれば
ファイルのダウンロードが始まるようにする。
・自鯖が死亡していれば「ダウンロードできませんアイコン」を表示して、それを
クリックしても何も起きない(リンクそのものが貼られていない)。
ということでした。
これ自体はリンク場所に以下のスクリプトを貼ることで実現できました。
<?php
$fp = @fsockopen ("mysite.com", 80, $errno, $errstr, 0.5);
if(!$fp) {
echo '<img src=error.gif>';
} else {
echo '<a href="mysite.com/download.zip"><img src="ok.gif"></a>';
}
?>
ただ目下の問題は自鯖の生死の判断がつくまでの間、html全体が表示
されないというところですね。おそらく上記のスクリプトのところで自鯖の
生死の判断を下す間止まってしまうのでしょうね。
0297nobodyさん
05/01/09 17:36:02ID:???0299nobodyさん
05/01/09 20:49:05ID:???0300nobodyさん
05/01/09 20:53:46ID:???0301294
05/01/09 21:10:50ID:???さようならゴミ共
0303nobodyさん
05/01/09 21:37:51ID:???0304nobodyさん
05/01/09 21:50:15ID:???plugin/attach.inc.phpのAttachPagesクラスの中で$this->pages[$page]->toString($flat)みたいに"->"
を二回書いている部分の意味がわからないんで教えてください。
#ソースはちょっと長すぎて貼れなかったorz
0305226
05/01/09 21:56:20ID:???> それで、言いたい事は?
言いたかったことは>>294のコードを埋めるとその部分で処理が終わるまで
htmlの表示がストップすることです。htmlの部分だけさっさと表示してphpの
コードの部分はおいおい処理して表示されるのであれば全く問題無いはずです。
一方画像の表示だけならば>>289さんが提示された方法や>>230さんのJavaScript
を使う方法を用いれば本文とは別スレッドで実行されます。ただ画像だけでなく
リンク部分も含めて制御するとなると本文にも絡んできてしまうため簡単に別スレッド
とはいかないようです。
>>302
iframeに関してはまだ疎いのですがそれが唯一の解決方法でしたら
採用してみます。以前iframeはあまり使いたくないと言っていた人がいたのも
気になりますが・・・
0308nobodyさん
05/01/10 02:59:48ID:???0309nobodyさん
05/01/10 04:12:25ID:???アクセス毎に毎回チェックするのは無駄だから、
ローカルサーバーの状態をファイルなどに保存しておくといよ。
サーバーのパフォーマンス低下に繋がるかもしれないし、共用サーバーならなおさら。
サーバー側でcronなどが使えないなら、ローカルから通知するように、
ローカルの方からサーバーに定期的にリクエストを送る。
サーバー側でリクエストを受けとったら適当なファイルをtouch()。
チェックはファイルのタイムスタンプで判断。といった感じで。
iframeやjavascriptでも見かけ上の読み込み時間は誤魔化せるけど、
一番ボトルネックになってる部分はfsockopenなのだから、そこの設計の見直しが必要。
■ このスレッドは過去ログ倉庫に格納されています