【PHP】下らねぇ質問はID出して書き込みやがれ 118
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/04/24(火) 01:29:22.24ID:yStuoiA/過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 117
http://kohada.2ch.net/test/read.cgi/php/1332346244/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 他言語について言及しないこと(特にJavaは禁句)。PHPオンリーの回答者が不快になります。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0612nobodyさん
2012/05/09(水) 23:00:55.97ID:???0616nobodyさん
2012/05/09(水) 23:08:44.56ID:???0617nobodyさん
2012/05/09(水) 23:14:58.95ID:???0618nobodyさん
2012/05/10(木) 00:07:08.16ID:QTsnYVOg教えていただいたタグを少し編集してできました!
ありがとうございました。
0619nobodyさん
2012/05/10(木) 00:16:03.97ID:???>>590
> php.iniも同じ設定にしてあります
らしいよ
>>618
間違えたコード片あげてごめんね。できてよかった
0621nobodyさん
2012/05/10(木) 00:49:58.43ID:???というのは言い訳でメモ帳で書いているのでshis以外だとめんどくさい
0622nobodyさん
2012/05/10(木) 01:09:09.47ID:???0623nobodyさん
2012/05/10(木) 03:25:45.90ID:???少なくともphp.iniは同じだけど
> 両サーバはほぼ同じように設定しており
らしいし、どうも>>599があやしいので、>>608を書いてみたよ。
0624nobodyさん
2012/05/10(木) 07:42:27.87ID:tDrvx8QuAddDefaultCharsetはともに無効、Apacheのバージョンも同じです
>>607
phpにヘッダーをはかせております
>>609
output_handlerも共に同じです
>>608 >>620
結局違うところは、.htaccessがあるかないかの違いでした(本サーバには置いていません)
.htaccessの設定でなぜcharsetに影響がでるんでしょうか・・・
0625nobodyさん
2012/05/10(木) 10:17:42.00ID:???だからそoutput_handlerは何になってたのかきいてるんだけど
素のhtmlファイルまでphp処理するようになってたのが唯一の違いなら、
html出力するときにmb_output_handler通ってるせいで化けたと考えるのが自然じゃないの?
0626nobodyさん
2012/05/10(木) 10:44:27.79ID:???ブラウザからそのhtmlファイルを要求したときにphp通って(output_handlerの設定で)mb_output_handlerかかって、
ファイルの文字コードはshiftJISなのにUTF-8としてエンコードされてから送られてきてるんじゃないか、
って意味ね
ここまで書いて自信ないんだけど、
phpファイルのphpブロック外でもoutput_handlerの影響受けるよね?
0627nobodyさん
2012/05/10(木) 13:27:00.40ID:???なめてるの?
0628nobodyさん
2012/05/10(木) 13:33:51.57ID:???馬鹿には現状で充分なんです
0630nobodyさん
2012/05/10(木) 13:55:11.87ID:???0631nobodyさん
2012/05/10(木) 14:23:00.73ID:0ynRr1Caphp.ini内
output_handler = mb_output_handler
となっています
説明すごくわかりやすく感謝です
htmlファイルとして出力したものを、htaccessの設定故にそれをphpとして内部で実行しようとするから
内部エンコードのUTF-8になってブラウザに出力されてしまうのですね・・・
phpで処理させてるときにShift_JISで処理させるとなれうと、mb_output_handler("SJIS")のような
記述がいりますでしょうか? php.iniに設定すると他ファイルに影響するので
そのファイルだけに適用させるにはどうしたらよいものでしょう?
htmlファイルの頭に<?php mb_output_handlerの設定?>あたりを書き出しておけばよいのでしょうか
0633nobodyさん
2012/05/10(木) 14:59:48.12ID:???2010年頃のT004でダメだったって記事があるんだが
2008年頃のW60代が生き残ることもあって
まだダメっぽい。
0634nobodyさん
2012/05/10(木) 15:01:39.05ID:???0635nobodyさん
2012/05/10(木) 15:27:02.48ID:0ynRr1Caphpファイルを見かけ上htmlで実行させることが異様ってことでしょうか・・・?
とりあえずhtmlヘッダ前に以下の記述を差し込むことでhtaccessを有効にしたまま問題なく表示できるようになりました
<?php mb_internal_encoding(\"SJIS\"); ?>
0636nobodyさん
2012/05/10(木) 15:55:23.59ID:???T004 ブラウザが7.2でも XHTMLじゃなきゃだめだよ。
6.2のが結構あるんだけど、
今年の7月に 周波数再編でかなり減ります。
http://www.au.kddi.com/seihin/cdma1x/
0637nobodyさん
2012/05/10(木) 16:03:28.41ID:???0638nobodyさん
2012/05/10(木) 17:09:32.94ID:???0640nobodyさん
2012/05/10(木) 18:31:40.04ID:???0642nobodyさん
2012/05/10(木) 21:32:42.47ID:???レスもらう態度じゃねーよ。>>631お前のことだよ
0643nobodyさん
2012/05/10(木) 22:02:22.84ID:???0644nobodyさん
2012/05/11(金) 00:58:45.84ID:8qmfX98h「カートに商品を入れる」という処理をセッションとMySQLでやっていまして、
誰がどの商品を追加したかトークン用のセッションを与えて判別しています。
セッションなのでブラウザを閉じれば消えるわけですが、
DBの情報はそのまま残っています。
こういう場合、DBにレコードが溜まり続けてしまいますが、
cronか何かで定期的に削除するのでしょうか?
それとも何か良い設計方法があれば教えてください。
0645nobodyさん
2012/05/11(金) 01:20:35.19ID:???セッションに全部入れて決済処理に入る時
ログイン&セッションに入ってる商品をDBに再照会
そこで売り切れだったら操作やり直してくれという流れでいいのでは
0646nobodyさん
2012/05/11(金) 01:53:32.33ID:???0647nobodyさん
2012/05/11(金) 01:55:37.05ID:8qmfX98h最初はそう思ってたのですが、DBに入れる事で
カートテーブルと商品テーブルをJOINしてデータの出し入れがしやすいんです。
商品IDをセッションに入れるパターンの場合、
出力時(カートの中身を見る)に、セッションに保存されている商品ID毎に
SQLを実行して行かなくては行けませんよね?それが無駄に感じるので、
DB保存&参照時にはJOINする事にしました。
(amazonとかもこうしてると思います
0648nobodyさん
2012/05/11(金) 02:10:59.10ID:???カート商品入れる処理時に
1/500の確率でレコード削除する関数叩くとか
(そのユーザには少し待ち時間もらうことになるが)
まぁそんなかんじが無難でないの?
0651nobodyさん
2012/05/11(金) 03:07:38.69ID:8qmfX98hありがとうございます。参考にします。
>>649
皆さんに言われてDBに入れるのも違う気がするので、もう少し考えます。
>>650
PCが違ってもカートの中身は保持されているので、DB使っていると思います。
0652nobodyさん
2012/05/11(金) 03:38:37.74ID:???ユーザごとにカートに入れている商品コードを管理。
ログインしてカート見に行ったときに適宜売り切れか問い合わせる形でいいんでね?
普通に商品情報検索して表示するのと変わらないでしょう?
0653nobodyさん
2012/05/11(金) 04:05:32.33ID:???0654nobodyさん
2012/05/11(金) 05:36:38.73ID:???サーバ側では保持してないよ
amazonの場合は個人の欲しいものリストとして管理するから
ああいうのはDBだな
0655nobodyさん
2012/05/11(金) 06:21:32.62ID:TEIyqVKGSession情報を取得できない。
処理のかかるPHP処理1とその処理中の状況をSessionで取得するPHP処理2がある。
初回の処理では値を取得することができないが、セッションが生きてるうちに2回目の処理を行うと意図した結果になる。
[環境]
Google Chrome + WindowsXP Xampp(Chromeで動けば他のブラウザは動かなくてもよい)
[html]
<html>
<head>
<script type="text/javascript" src="./jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="./Test.js"></script>
</head>
<body>
<div id="result"></disp>
</body>
</html>
0656655
2012/05/11(金) 06:23:00.42ID:TEIyqVKGvar hTimer = null;
$( function() {
hTimer = setInterval( ProgressEvent, 1000 );
$( "div#result" ).html( "START" );
$.post( "./Wait.php", null, OnFinishEvent );
} );
function ProgressEvent() {
$.post( "./Test.php", null, OnResultEvent );
}
function OnResultEvent( in_Data ) {
$( "div#result" ).text( in_Data.test );
}
function OnFinishEvent( in_Data ) {
clearInterval( hTimer );
$( "div#result" ).text( "FINISH" );
}
0657655
2012/05/11(金) 06:23:33.73ID:TEIyqVKG<?php
header('Content-type: application/json');
session_start();
@session_destroy();
session_write_close();
for( $i=0; $i<3; $i++ ) {
session_start();
$_SESSION['test']+=5;
session_write_close();
sleep( 3 );
}
?>
[PHP2]
<?php
header('Content-type: application/json');
session_start();
echo json_encode( $_SESSION );
?>
連投すみません。
0658nobodyさん
2012/05/11(金) 09:14:30.53ID:???最新のPHPにしたら拡張で変数の扱いを考えろ!
ばかやろーと言われたw
0659nobodyさん
2012/05/11(金) 09:29:58.46ID:TEIyqVKGレスありがとうございます。
セッションファイルが作成されるタイミングを理解していませんでした。
処理として以下の流れを先のコードの前に挿入して、テストしてみます。
1、[クライアント側] 初期化.phpへリクエスト(同期でリクエスト)
2、[サーバー側] 初期化.php > セッションファイルを作成
3、今までの流れ(destroyは行わない)
最新PHPのエラーについては、上記コードが対応したのちに見てみます。
0660nobodyさん
2012/05/11(金) 10:18:25.34ID:???よくわかってないけど、3行目が $( function() {
じゃなくて
$(document).ready(function() {
なんじゃないかな?
0661655
2012/05/11(金) 10:27:47.36ID:???レスありがとうございます。
>>659のやり方で、(おそらく、、、)解決できました(ものと思っています、、、)。
現在、本番のコードを修正してアップロードして動作確認したら
先の質問でさらした間違っていたコードを修正して、こちらに書き込みます。
0662655
2012/05/11(金) 11:06:39.96ID:TEIyqVKG邪魔かもしれませんが、動作したコード貼り付けていきます。
[JS]
var hTimer = null;
$( function() {
$.post( "./Init.php", null, OnInitEvent );
} );
function ProgressEvent() {
$.post( "./Test.php", null, OnResultEvent );
}
function OnInitEvent() {
hTimer = setInterval( ProgressEvent, 1000 );
$.post( "./Wait.php", null, OnFinishEvent );
$( "div#result" ).html( "START" );
}
function OnResultEvent( in_Data ) {
$( "div#result" ).text( in_Data.test );
console.log( in_Data );
}
function OnFinishEvent( in_Data ) {
clearInterval( hTimer );
$( "div#result" ).text( in_Data );
}
0663655
2012/05/11(金) 11:08:15.24ID:TEIyqVKG[初期化PHP Init.php]
<?php
session_start();
@session_destroy();
session_write_close();
?>
[PHP1 Wait.php]
<?php
header('Content-type: application/json');
for( $i=0; $i<3; $i++ ) {
session_start();
$_SESSION['test']+=1;
session_write_close();
sleep( 3 );
}
echo json_encode( "FINISH" );
?>
0664655
2012/05/11(金) 11:14:00.68ID:TEIyqVKGスレ汚しすんませんでした。
>>658
php-5.3.3-3.el6_2.6.x86_64
本番用のCentOS6.3サーバーが↑なのですが、
特にエラーは吐き出されませんでした。
ただ、、、こちらのサーバー設定でエラーを吐き出さないように設定している可能性もあります。
(これ以上はスレチになりますので、ここで報告は終わりにします)
0665nobodyさん
2012/05/11(金) 11:20:21.55ID:???Baseの定義を別ファイルに移してrequireするとBase OK、Sub NGになるのはどうしてでしょうか?
そのあたりの仕組みを解説しているページなど教えてください。
// OK
<?php
class Base {
}
echo "Base " . (class_exists('Base') ? 'OK' : 'NG') . "\n";
echo "Sub " . (class_exists('Sub') ? 'OK' : 'NG') . "\n";
class Sub extends Base {
}
// NG
<?php
require_once('Base.php');
echo "Base " . (class_exists('Base') ? 'OK' : 'NG') . "\n";
echo "Sub " . (class_exists('Sub') ? 'OK' : 'NG') . "\n";
class Sub extends Base {
}
0666nobodyさん
2012/05/11(金) 12:03:39.39ID:???専用サーバーでよろしく!
>>665
ほんとだ、面白いw
実際にbaseが呼ばれるまでclass扱いしてないみたい
さすが変態言語
0667nobodyさん
2012/05/11(金) 12:17:14.48ID:???includeしないなら baseはどこでも
sub定義は使う(インスタンスの生成とか、 class_exists)の前な。
0668nobodyさん
2012/05/11(金) 13:15:48.44ID:???そういうのは文章化はされてないのでソースの Zend/ 以下を読む
スクリプトのパース時に未定義のクラスを使ったクラス定義がある場合は
遅延クラス定義用の中間コードが生成され
実行時にクラス定義が行われる
0669nobodyさん
2012/05/11(金) 23:54:03.57ID:???0670nobodyさん
2012/05/12(土) 01:09:03.69ID:???0671nobodyさん
2012/05/12(土) 16:32:44.14ID:v9zwoOnjという正規表現を書いてみたのですが正規表現のベテランの方から見て
如何でしょうか?
よりスマートな書き方があればご伝授下さい。
$str = " あああ いいい ";
$str = preg_replace("/^(.+?)[\s| ]*$/","\\1",$str);
echo "[{$str}]<br>";
0673nobodyさん
2012/05/12(土) 16:47:36.34ID:???0675nobodyさん
2012/05/13(日) 00:35:24.38ID:??????すり抜けますか?
今日の午後、試してみます。
>>674
勉強がてらバリデーションを全てオリジナルの正規表現でやろうと思ってます。
0677nobodyさん
2012/05/13(日) 00:47:07.48ID:K0OOuigT正規表現に特化した資格とかって無いですかね?
毛嫌いしていた正規表現ですがマスターすると
色々と便利な事に最近きずきました。
0678nobodyさん
2012/05/13(日) 00:47:10.41ID:???0679nobodyさん
2012/05/13(日) 00:48:06.45ID:???それでも>>677のような挑発してくるってことは
いつもの人ですね┐(´д`)┌
0680nobodyさん
2012/05/13(日) 00:51:20.57ID:???こっちで聞いた方が良い
http://kohada.2ch.net/test/read.cgi/php/1168450843/
0681nobodyさん
2012/05/13(日) 01:00:47.76ID:???0682nobodyさん
2012/05/13(日) 01:29:14.14ID:???0683nobodyさん
2012/05/13(日) 01:46:17.73ID:K0OOuigTありがとうございます。
正規表現系はあっちのスレで質問します。
ちなみに正規表現のルールは各言語同じなんでしょうか?
0684nobodyさん
2012/05/13(日) 02:01:52.08ID:???まぁたいていどの言語でも問題ない
SQLみたいなもんだな
とりあえずwikipediaでもみてこいや
0686nobodyさん
2012/05/13(日) 02:16:34.83ID:???0687nobodyさん
2012/05/13(日) 02:18:33.56ID:???ちょっと叩かれたからって固執しちゃって被害妄想すぎんじゃね?
そんでずっと荒らし続けるとかどんだけ暇なのよ
他言語の話題をしたから叩かれたんじゃないだろ?
>>275のスレを見て何がいけなかったのか考えて反省してこいよ
これで本当に他言語の話出したから嫌がられたとか思ってんなら
救いようのない被害妄想野郎ですよ
0688nobodyさん
2012/05/13(日) 02:19:50.10ID:???0689nobodyさん
2012/05/13(日) 02:35:12.94ID:???補足するとPHPは正規表現エンジンを持っているから使い分けする必要がある
preg_* で始まるものがPCREでPerl 5と互換がある
mb_ereg_* で始まるものが鬼車。Ruby 1.9も同じエンジンを使っているはず
どちらもphp.iniの設定は独立しているから一緒にして考えないこと
ereg_* 系は廃止予定なので割愛
0691nobodyさん
2012/05/13(日) 03:12:40.19ID:???0692nobodyさん
2012/05/13(日) 03:16:31.08ID:???0693nobodyさん
2012/05/13(日) 06:23:02.31ID:eBmlSuD7DBのテーブルの変更を、Subversionみたいに(じゃなくてもいいけど)管理する方法ないでしょうか
複数の鯖で運営する時、DBのテーブル構成の同期を取るのにいつも苦労しています
0694nobodyさん
2012/05/13(日) 06:28:29.62ID:???0695nobodyさん
2012/05/13(日) 11:37:55.51ID:???0696nobodyさん
2012/05/13(日) 11:42:08.79ID:???0697nobodyさん
2012/05/13(日) 12:30:04.62ID:???0698nobodyさん
2012/05/13(日) 12:43:13.71ID:???0699nobodyさん
2012/05/13(日) 13:10:05.00ID:???大方のフレームワークの手法では
データベースのバージョン=アプリケーションのバージョンという考え方から
PHP側にバージョンアップ、ダウンの仕組みを実装しておいて、
バージョン間の差分のDDLで実行するようにしている
これはDoctrineだがイメージ的には掴めると思う
http://www.symfony-project.org/doctrine/1_2/ja/07-Migrations
/**
* This class has been auto-generated by the Doctrine ORM Framework
*/
class AddBlogPostExcerptColumn extends Doctrine_Migration
{
public function up()
{
$this->addColumn('blog_post', 'excerpt', 'string', array('length' => '255'));
}
public function down()
{
$this->removeColumn('blog_post', 'excerpt');
}
}
0700nobodyさん
2012/05/13(日) 14:09:56.02ID:???回答するやつも嵐なのか?
0701nobodyさん
2012/05/13(日) 14:15:04.35ID:???0702nobodyさん
2012/05/13(日) 14:18:00.37ID:???0703nobodyさん
2012/05/13(日) 14:24:40.18ID:???いないやつのためにケンカするんじゃねえよ
はい次
0704nobodyさん
2012/05/13(日) 14:30:34.24ID:???てなわけで次
0705nobodyさん
2012/05/13(日) 14:34:13.77ID:???PHPのPHPの変更を、PHPみたいに(じゃなくてもいいけど)PHPする方法ないでしょうか
複数の鯖でPHPする時、PHPのPHP構成のPHPを取るのにいつもPHPしています
0706nobodyさん
2012/05/13(日) 14:40:54.70ID:1mjLS1dc0707nobodyさん
2012/05/13(日) 14:59:16.07ID:???ここはPHPスレだ、PHPの話がしたけりゃPHPスレ行けよ
0708nobodyさん
2012/05/13(日) 15:03:00.20ID:???面白いとでも思ってんの?
0709nobodyさん
2012/05/13(日) 15:04:34.49ID:???面白いとでも思ってんの?
0710nobodyさん
2012/05/13(日) 15:06:10.38ID:???PHPPHPPHP、PHPPHPPHPPHP?
PHPPHPPHPPHPPHP!PHPPHPPHPPHPPHPw
■ このスレッドは過去ログ倉庫に格納されています