目次
ディスカッションに返信(解決策)
ホームページ バックエンド開発 PHPチュートリアル PHP が大量のデータを実行すると、要約操作に時間がかかりすぎて、Web ページが失敗します。

PHP が大量のデータを実行すると、要約操作に時間がかかりすぎて、Web ページが失敗します。

Jun 23, 2016 pm 02:14 PM

PHP

実行時間は約 2 時間で、その後ページは無効になります。ご存知の方がいらっしゃいましたら、ご協力いただけると大変助かります。

ディスカッションに返信(解決策)

統計的な要約を処理するにはCなどの他の言語に変更してください

コードはどこにありますか。 。 。 。


function fourselect(){
$db = Db::getInstance();
//エンコーディングに基づいてデータをクエリします
$id=$_REQUEST['id'] //id
$datamonth=$_REQUEST[' datamonth ']; //Date
$ids=explode(',',$id); //Interception
$jxtblist=""; // プログレスバーの識別を制御します
$datalist; // プロンプト情報を返します
$datalist1;
if(!empty($id)){
foreach($ids as $key=>$li){

$jxtbsql="select * from jx_tbprofile where id=". $li ;

$jxtblist =$db->query($jxtbsql);

foreach($jxtblist as $key=>$li1){
if($li1[execlevel]==0){ // 0 ステージ
$list;
$success=0;//完了したトランザクションの数

//最初に宛先フィールドの設定が間違っているかどうかを判断します
$strtab="select * from jx_tbprofile_dtl where tableno='".$li1[tableno ]."' "; //フィールド名を取得します
$listtab=$db->query($strtab); $strcol="show columns from ".$li1[desttable] //宛先テーブルのフィールド名を取得します
$listcol=$ db->query($strcol);

$ziduan;

foreach ($listtab as $keytab=>$litab) {//宛先テーブルのフィールドを設定します
($listcol as $ keycol=>$licol)//宛先テーブルフィールド
{
if($litab[dest_column]==$licol['Field']){
$boole=true;同様に一致する場合は、$boole に true を代入します。
//echo "Equal";
}else{
//echo $litab['Field']
$boole=false; !$boole){//構成テーブルのフィールドを対応させた後、$boole の値を取得し、それが false の場合は、変更されたフィールドを $ziduan 関数に保存し、プロンプト メッセージを追加します
$ziduan=$ziduan.$ litab[dest_column];
$boole=false;
Break;
}
}
if(!$boole){
$datalist=$datalist."宛先フィールド ".$ziduan." が見つかりません。設定エラーです!";
}else{

//古いデータをクリアします
$sql=str_replace("|datamonth|",$datamonth,$li1[sqldeldest]);//設定された削除ステートメント
// echo $sql
//mysql_query( $sql) または die(mysql_error());
if (mysql_query($sql)){
//echo mysql_query($sql);
$datalist=$datalist."元のデータ テーブルはクリアされました! $sql1 =$li1[remarks];//設定されたクエリ文
$re=str_replace("|datamonth|",$datamonth,$sql1); //置換文字

$list1 =$db-> ; query($re );
//mysql_query($re) または die(mysql_error());


foreach($key=>$ li2)
{
//$User = A($li1[tableno]); // アクション コントローラー オブジェクトをインスタンス化します


foreach ($listtab as $key=>$litab){
if(!empty($litab) [マーク] )){//宛先テーブルのデフォルトのフィールド名マーク。
//echo $litab[mark];
$_POST[$litab[dest_column]]=$litab[mark]
}else{
$_POST[$litab[dest_column]]=$li2[$litab[source_column] ];
}
}
//$User->fuValues1($li2);
$bo=$jx->add(); $success+1; //成功したトランザクションの数
}


//echo date("Y-m-d h:i:s")."
".$li1[tableprofile]."決済完了! 成功" . $success."ペン データ。
";

$datalist=$datalist.date("Y-m-d h:i:s")."
".$datamonth.$li1[テーブルプロファイル]。 " 決済が完了しました。正常に完了しました。".$success."Data.
";

}else{
$datalist=$datalist."削除ステートメントに問題がありました!
}

}

$this->assign('isok',$isok);
}
}
}
}
}

自分で分析してください。実行に時間がかかりすぎるコード行をマークできます。


$list1 =$db->
//mysql_query($re) または die(mysql_error());


foreach( $list1 as $key=>$li2)
{
//$User = A($li1[tableno]) // アクション コントローラー オブジェクトをインスタンス化します


foreach ($listtab as $key=>$ litab) {
if(!empty($litab[mark])){//宛先テーブルのデフォルトのフィールド名マーク。
//echo $litab[mark];
$_POST[$litab[dest_column]]=$litab[mark]
}else{
$_POST[$litab[dest_column]]=$li2[$litab[source_column] ];
}
}
//$User->fuValues1($li2);
$bo=$jx->add(); $success+1; //成功したトランザクションの数
}

このセクションでは、クエリ ステートメントを実行し、結果を宛先テーブルに 1 つずつ挿入します。ソーステーブル、宛先テーブル、クエリステートメント、および削除ステートメントの別のテーブルで構成しました。このコードで構成されたデータを検索し、クエリ テーブルを実行して新しいテーブルに挿入します。このうち4つのデータは比較的大きなデータです。単独ではかなり速く実行できますが、4 つを同時に実行すると、ブラウザーが障害を起こすまでに長い時間がかかります。

最終的に生成された SQL を投稿して見てください。テーブル構造とインデックスの状況を明確に説明してください。

set_time_limit(0);? ? ?

最終的に生成された SQL を投稿して見てください。テーブル構造とインデックスの状況を明確に説明してください。 これらの3つのテーブル間でデータを変換しますjx_zy_detail_charge_belong、jx_zy_detail_charge_force、jx_zy_detail_charg月、JX_ZY_DETAIL_CHARCH_BELONG_CHARTY_DATE、JX_ZY_DETAIL_CHAREX_BELONG.OP_ID_CODE、age、
JX_Zy_detail_Charge_belong.ward_code .dept_code、
jx_zy_detail_charge_belong.order_no、
jx_zy_detail_charge_belong.exec_unit detail_charge_belong.charge_code = jx_mz_charge_item.fee_code and
(jx_mz_charge_item.exec_unit is nullまたは
jx_mz_charge_item.exec_unit = ' ')
ユニオンAll Select JX_Zy_Detail_Charge_Belong.Data_Month、
JX_ZY_DETAIL_CHARNG_BELONG.INPATIENT_NO Charge_code、
Jx_ Zy_detail_Charge_belong.Charch_fee、
Jx_zy_detail_charge_belong.percentage、zy_detail_charge_belong.serial、jx_zy_detail_chare_belong。 key_col,
jx_zy_detail_charge_belong.pat_name

FROM jx_zy_detail_charge_belong ,jx_mz_charge_item
WHERE jx_zy_detail_charge_belong.data_month = '|datamonth|' および
jx_zy_detail_charge_belong.charge_code= jx_mz_charge_item.fee_code および
jx_mz _charge_item.exec_unit が null ではない および
jx _mz_charge_item.exec_unit <>'
は構成テーブルからのものです, jx_mz_charge_item でこのテーブルのcharge_codeとfee_codeを見つけ、構成テーブルのexec_unitが条件を満たしていることがわかったら、この値を使用して元のテーブルの部門の値を置き換えます
2番目の変換クエリSQL: jx_zy_detail_charge_force-》 jx_zy_detail_charge
data_month、inpatient_no、charge_date、op_id_code、charge_code、charge_fee、dept_code、exec_unit、retprice、charge_amount、serial、bill_code、pat_name を jx_zy_detail_charge_force から選択します
jx_zy_detail_charge_force.exec_unit が含まれていない場合 (jx_code_ から説明を選択します) ctl where item_no like 'ordept%' ) と data_month= '|datamonth|'
すべて結合
data_month、inpatient_no、charge_date、op_id_code、charge_code、charge_fee、dept_code、exec_unit、retprice、charge_amount、serial、bill_code、pat_name を選択します
jx_zy_detail_charge_force から
ここで jx_zy_detail_charge_force.exec_uni入っている(選択してください) jx _code_ctl の説明 ( item_no が 'ordept%' の場合) ではなく
( jx_zy_detail_charge_force.bill_code ( item_no が 'orbill%' の場合の jx_code_ctl から説明を選択) またはjx_code_ctl の説明 (item_no like 'zlbill%') ) および data_month= '|datamonth|'
すべて結合
data_month、inpatient_no、charge_date、op_id_code、charge_code、charge_fee、dept_code、dept_code、retprice、charge_amount、serial、bill_code、pat_name を選択
jx_zy_detail_charge_force から
where jx_zy_detail_charge_force.exec_unit in (j から説明を選択x_code_ctl ここでitem_no like 'ordept%' ) および
( jx_zy_detail_charge_force.bill_code in (item_no like 'orbill%' の jx_code_ctl から説明を選択) または
jx_zy_detail_charge_force.bill_code in (item_no like 'zlbill%' の jx_code _ctl から説明を選択) ) および data_month ='|datamonth|'
すべて結合
data_month、inpatient_no、charge_date、op_id_code、charge_code、charge_fee、dept_code、dept_code、retprice、charge_amount、serial、bill_code、pat_name を選択
jx_zy_detail_charge_force から
ここで、jx_zy_detail_charge_force.exec_unit は null で、data_month = ' |datamonth|'

テーブル jx_code_ctl に実行部門 exec_unit フィールドが設定され、テーブル jx_code_ctl に課金カテゴリ bill_code フィールドも設定されます。 データの実行部門 exec_unit が請求部門 dept_code に変更されます。


に分かれています。 外来テーブルと入院テーブルの手順は同じです。 ここでは、外来患者と入院患者の最初の SQL を実行し、次に外来患者と入院患者の 2 番目の SQL を実行します。速度的には1時間程度で完了しますが、4つの項目を同時に実行すると時間がかかり、ページもハングします。

バックグラウンドでの実行により必要なデータが生成され、フロントエンドで結果が表示されます。

バックグラウンドでの実行により必要なデータが生成され、フロントエンドで結果が表示されます。 はい、データ量が最も多いこれら 4 つのデータを一緒に実行すると非常に時間がかかりますが、そのうちの 2 つを実行するとはるかに高速になります。

EXPLAIN コマンドを使用して SQL コマンドをチェックし、mysql が提供する提案を確認します

EXPLAIN コマンドを使用して SQL コマンドをチェックし、mysql が提供する提案を確認します

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

See all articles