検索
ホームページバックエンド開発PHPチュートリアルThinkPhp3.2 を Linux 環境に配置すると、プログラム メモリ割り当ての問題が発生する

エラーメッセージ:
--------------------------------------------- -------
: (
許容メモリ サイズ 1916796928 バイトが使い果たされました (3086655745 バイトを割り当てようとしました)
ファイル:/Data/XXX/Common/Function s.php 行: 370
Thinkphp3.2.2 { 高速かつシンプルOOP PHP フレームワーク } -- [ 考えるだけでできる ]

---------------------------------- --------------------
環境はphp5.4+nginx+mysql、マシンはAlibaba Cloudホスト、メモリは1024mです
そのようなことに遭遇した人はいますか?問題は何ですか?
どうすれば解決できますか? www.conf のmemory_limit を変更した後もこの問題が発生します

一度に 2.8G が必要ですか?行は次のようなものです:

        return ucfirst(preg_replace_callback('/_([a-zA-Z])/', function($match){return strtoupper($match[1]);}, $name));
実際に 2.8G メモリを割り当てたいですか?

許容メモリ サイズ 1916796928 バイトが使い果たされました (3086655745 バイトを割り当てようとしました)

の意味:

191679692 8b (1828M) の使用可能なメモリ

3 を申請します086655745b ( 2943M) スペースに失敗しました


処理される変数 $name に明らかに問題があります

Runtime ディレクトリをクリアして、再試行してください


Runtime ディレクトリをクリアしても、問題はまだ解決されていません

2 日経ちましたが、問題はまだ解決されていません! 解決策...

フレームワークがメモリを消費します。
フレームワークがどれだけのメモリを消費しても、おそらく無限ループになり、スペースが空き続けます。問題、書かないでください
$b = preg_replace_callback('/_([a-zA-Z])/', 'aaa', $name)

return ucfirst($b);

function aaa($match){

Return strtoupper($match[1]);

}

_([a-zA-Z]) を置き換えて最初から検索するため、無限ループになる可能性があります終了させる必要があります。

たとえば、停止するには _ を削除します

おそらく、別の解決策を使用できます: preg_replace、preg_match_all、preg_split


まあ、フレームワークがどれだけのメモリを消費しても、2G を消費することはできません
おそらく無限ループで常にスペースが開かれます。
問題がその文にあると確信している場合は、それほど複雑に書かないでください
$b = preg_replace_callback('/_([a-zA-Z])/', 'aaa', $name)
return ucfirst($ b);

function aaa($match){
return strtoupper($match[1]);

_([a-zA-Z]) を置き換えて最初から開始するためかもしれません、つまり無限ループになるので、何らかの方法で終了させる必要があります。

たとえば、停止するには _ を削除します

別の解決策としては、preg_replace、preg_match_all、preg_split が考えられます



----------- ---------- --------------------
これはフレームワーク内のコードです。私が書いたものではありません。

リフレッシュ後、再度以下の問題が発生しました。再度リフレッシュしても上記のメモリ問題が交互に発生します。
------------------
502 Bad Gateway

nginx/1.4.1

プログラムの書き方が間違っている可能性があります。間違っているため、基礎となるフレームワークが無限ループを作成します。
これを実行すると、制御できる論理フローがわかります。

先頭から始めて、文ごとに exit(); を追加します (もちろん、二分法を使用して見つけることもできます)
どの文が開かれるまでこの問題が発生するか、その文は間違っています。
その文でどのような関数が使用されているかを確認し、変数を出力し、パラメータを渡す順序が正しいかどうかを確認します。
うまくいかない場合は、その文と近くのコードを投稿して、みんなが見てみるのを手伝ってください

3.0 を見てみましたが、あなたが言及したような機能はないようです
http://doc.thinkphp. cn/reference/functions.html
バージョンが古い可能性がありますか?

ああ、3.2.2 を読み間違えました。9 階を押して実行してください。

では、使用方法を公式マニュアルと一致させてください。

http://document.thinkphp.cn/manual_3_2.html


一度に 2.8G 必要ですか?

--------- ----- ----------------

モデレータさん、あなたも同じ質問に遭遇して答えたことはありませんか?あなたは毎日2時まで起きていて、一目見ただけですべてを忘れる能力を持っていますか?

問題の原因は、preg_replace_callback にメモリ リークがあることです。 Windows では問題ありませんが、Linux 5.4.22 では突然上記の問題が発生します。

問題は、Linux で php5.4 を使用すると、TP32 で上記の問題が発生する可能性があることです。

我的php环境是 5.4.22.

很奇怪!即便我判定是 bug,那也不能说明什么




什么东西一次要2.8G?


----------------------------
版主,你不是碰到和回答过同样问题么?你是不是天天熬夜到2点,达到了过目就忘的能力啊。
问题原因就在于:preg_replace_callback出现内存泄露。在windows下没有问题,在linux下5.4.22,一下有上面问题。

所在,TP32在linux用php5.4可能会出现上面问题。

我怀疑是你的程序哪里错了,可能是写法错了,使底层框架产生死循环。
你这样做,查看你可控的逻辑流程。
从上面开始,一句句往下添加exit();(当然你可以用二分法找)
直到开启哪一句使得出现这个问题,就是那句错了。
查一下那句用到了什么函数,打印一下变量,看看传参顺序有没有错。
不行的话把那句及附近的代码贴上来让大家帮你看看



多谢,和我程序完全没有关系。随便使用下 preg_replace_callback就会出现问题。比如test.php:
var_dump(preg_replace_callback('/\w{2}/',function($m)use(&$i){ echo ' i='.$i++; return $m[0]."cc ";},'abcd2acc'));

也会出现同样的问题。在国外网站随便一搜索,报告这个bug的人实在是太多了。但一直反复解决了,又反复出现。

自己写了个自认为比TP优秀多的框架YuYan PHP,从根本上解决了此问题。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
どのデータをPHPセッションに保存できますか?どのデータをPHPセッションに保存できますか?May 02, 2025 am 12:17 AM

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

どのようにPHPセッションを開始しますか?どのようにPHPセッションを開始しますか?May 02, 2025 am 12:16 AM

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?May 02, 2025 am 12:15 AM

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?May 02, 2025 am 12:11 AM

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

PHPセッションはCookieとどのように異なりますか?PHPセッションはCookieとどのように異なりますか?May 02, 2025 am 12:03 AM

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

PHPはユーザーのセッションをどのように識別しますか?PHPはユーザーのセッションをどのように識別しますか?May 01, 2025 am 12:23 AM

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションを保護するためのベストプラクティスは何ですか?PHPセッションを保護するためのベストプラクティスは何ですか?May 01, 2025 am 12:22 AM

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

PHPセッションファイルはデフォルトで保存されていますか?PHPセッションファイルはデフォルトで保存されていますか?May 01, 2025 am 12:15 AM

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、