PHP Web アプリケーションで非常に奇妙な問題に遭遇しました。コードを小さなファイルに分割して、圧倒されすぎないようにモジュール化するように設計しました。私のアプリは、非営利団体の資金申請管理システムです。問題が発生しているモジュールは、申請が提出されてからの営業時間数を計算して出力します。
この「時間」モジュールは、アプリの複数の異なるセクションに含まれています。一部の場所では、すべてが正常に機能します。ただし、ある特定の場所では、モジュールが実行されていないようで、代わりに数値「12」が出力されます。これは、私のコードが一度に多くのことを行い、PHP がメモリ不足になった結果でしょうか?
「時間」モジュール:
<?php
/* Time Module
Added for Version: 1.1
Last Updated: 10/11/2012
*/
$timeSince = time() - (int)$item['timestamp']; //Calculate the number of seconds between now and the application's submission
$timeSince = $timeSince / 60 / 60; //60secs; 60mins - Convert the seconds to hours
$timeSince = round($timeSince); //Round up or down to give us a whole number
if( //Set the highlight color to green if we're within the review timeframe.
($timeSince <= 12 && $item['appStatus']=="0") ||
($timeSince <= 48 && $item['appStatus']=="1") ||
($timeSince <= 72 && $item['appStatus']=="2")
)
$timeColor="#090";
elseif( //If we're slightly behind the timeframe, highlight as yellow
($timeSince <= 24 && $item['appStatus']=="0") ||
($timeSince <= 60 && $item['appStatus']=="1") ||
($timeSince <= 84 && $item['appStatus']=="2")
)
$timeColor="#F90";
else //If we're far behind the timeframe, highlight as red
$timeColor="#F33";
?>
Submitted: <?php echo date("F j, Y", $item['timestamp']) ?><br>
<?php if($item['appStatus']=="0" || $item['appStatus']=="1" || $item['appStatus']=="2") { ?>
<span style="color:<?php echo $timeColor ?>"><?php echo $timeSince ?></span> Hours Since Submission
<?php } ?>
ファイルが含まれるコード (アクション ボタンの行の下):
<div style="float:right; padding:10px; text-align:right;">
<?php if(isset($includePrefix)) { ?>
<a href="appAssets/print.php?id=<?php echo $_GET['id'] ?>" target="_blank">
<img src="appAssets/print.png" alt="Print This Application" align="middle" title="Print This Application" /></a>
<a href="mailto:<?php echo $item['agencyEmail'] ?>">
<img src="appAssets/email.png" alt="Email Agency" align="middle" title="Email Agency" /></a>
<?php if(!$hide) { ?>
<a href="#" id="disbursementLink">
<img src="appAssets/dollar.png" alt="Disbursment Instructions" align="middle" title="Disbursement Instructions" /></a>
<?php } ?>
<br />
<?php } ?>
<?php include_once("time.php") ?>
</div>