2

別の問題をデバッグしようとしているときに、次の内容の HTML ファイルを作成しました。

<body>
Try 1:<iframe style='height:60px;' src='return_test1.php' ></iframe><br/>
Try 2:<iframe style='height:60px;' src='return_test2.php' ></iframe><br/>
Try 3:<iframe style='height:60px;' src='return_test3.php' ></iframe><br/>
Try 4:<iframe style='height:60px;' src='return_test4.php' ></iframe><br/>
Try 5:<iframe style='height:60px;' src='return_test5.php' ></iframe><br/>
Try 6:<iframe style='height:60px;' src='return_test1.php' ></iframe><br/>
Try 7:<iframe style='height:60px;' src='return_test2.php' ></iframe><br/>
Try 8:<iframe style='height:60px;' src='return_test3.php' ></iframe><br/>
Try 9:<iframe style='height:60px;' src='return_test4.php' ></iframe><br/>
Try 10:<iframe style='height:60px;' src='return_test5.php' ></iframe><br/>
</body>

各スクリプト ( return_test1.phpからreturn_test5.php ) には、次のコードのみが含まれています。

<?php
echo "SUCCESS";
?>

問題は、HTML ファイルを開くと、一部の iframe で予期される「SUCCESS」出力が表示される一方で、他の iframe では「Internal Server Error」が表示されることです。これらは、ページを更新するたびに変更されます。

cPanel サーバー ログを見ると、「メモリを割り当てられません: 子プロセスを作成できませんでした」というエラーが表示されます。リソースの統計を見ると、HTML ファイルを開くと使用メモリが最大 1 GB になります。

他のサーバーでコードを試してみましたが、もちろん問題なく実行されました。

また、PHP スクリプトの 1 つを直接開くと、常に良い結果が得られることにも言及しておく必要があります。同時に呼び出された場合にのみ失敗します。

このサイトは共有ホスティングにあり、トラフィックはほとんどありません。ホスティングを行っている会社は役に立ちませんでした。唯一の解決策は、別のホスティング プロバイダーに移動することです。

問題の原因を知っている人はいますか?または、サーバー構成を確認するためにホスティング担当者に提案できることはありますか?

4

3 に答える 3

1

結局、ホストを変更しました。

変更の翌日、古いホスティング事業者から、cPanel と cloudLinux のメーカーに相談した後、問題を修正したというメッセージが届きました。どうやらそれはごく少数のユーザーに影響を与える問題であり、「リソース管理部分」のカスタム パッチで修正されたようです (申し訳ありませんが、正確な詳細はわかりません)。

于 2012-11-19T14:12:15.293 に答える
0

ホスティング会社が、同時に実行できるプロセス/メモリの数を制限している可能性があります。あなたの例では、サーバーは11個のPHPプロセスを同時に作成します。また、メモリは異なる PHP プロセス間で共有されません。各プロセスは X メガバイトを使用し、メモリ制限に達します。

あなたのホスティング ソリューションは (非常に) 制限されているようです。ただし、変更したくない、または変更できない場合は、スクリプト ロジックに取り組むことができます。

たとえば、この種のソリューションでは、1 つのプロセスのみを使用します。

<body>
Try 1:<div style="height:60px; overflow: auto;"><?php require('return_test1.php'); ?></div>
Try 2:<div style="height:60px; overflow: auto;"><?php require('return_test2.php'); ?></div>
Try 3:<div style="height:60px; overflow: auto;"><?php require('return_test3.php'); ?></div>
<!-- ... etc ... -->
</body>
于 2012-11-16T13:51:47.270 に答える
0

あなたの共有ホスティング環境は冗談のようです。それらを取り除き、急いでください。10 個のプロセスを生成するのに十分なメモリを保証できない場合、それらはばかげています。

于 2012-11-16T13:39:42.010 に答える