Вам нужно будет подключить профилировщик Java (VisualVM) или ваш набор и проанализировать вашу кучу, чтобы узнать, какие объекты на самом деле вызывают это. Весьма вероятно, что какой-то клиентский SDK-контракт нарушен, в результате чего много Java-объектов лежат без GC.
Вот как я, вероятно, сделал бы это без использования каких-либо других фреймворков / библиотек и т. Д. Это в основном то, что сказал Элазар Лейбович.
<?php
//id is zero or a record id depending on whether updating or inserting
//an existing record could be edited using edit.php?id=10
//if the id GET parameter is omitted a new record will be created
$id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
$error = '';
if ($id) {
//this array would be in the same format as the one below
$record = fetchRecordFromDb($id);
} else {
$record = array( 'field1' => 'default value', 'field2' => 'some other default' );
}
//allow POST data to override what is already in the form
foreach ($record as $key => $value) {
if (isset($_POST[$key])) {
$record[$key] = $_POST[$key];
}
}
if (isset($_POST['submit'])) {
if (!validateForm()) {
$error = 'Some form error';
} else {
if ($id) {
updateRecord($id, $record);
} else {
insertRecord($record);
}
//ok, redirect somewhere else
header('Location: http://somewhere');
exit();
}
}
?>
<form method="post">
<?php echo $error; ?>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="text" name="field1" value="<?php echo htmlspecialchars($record['field1']); ?>"><br />
<input type="text" name="field2" value="<?php echo htmlspecialchars($record['field2']); ?>"><br />
<input type="submit" name="submit">
</form>
Вы можете использовать одну форму со скрытым полем для id
. Если это поле установлено - то вам следует обновить запись $ _ POST ['id']
остальной частью формы. Если поле не задано (то есть имеет значение = ""), вы должны вставить данные формы в новую запись.
Вы установите поле id
в соответствии с действием, например / data / edit / 1
установит для поля id
значение , а
/ data / new` не установит для него значение.
Для Например, ваше представление может быть
<form action="/data/edit/1">
<input type="hidden" value="<?php echo $data->id; ?>" />
<input type="text" value="<?php echo $data->name; ?>" />
</form>
В случае новой записи вызовите ваше представление со следующими данными
$data->id = '';
$data->name = '';
В случае известной записи просто инициализируйте объект $ data
с данными
$data->id = $record_id;
$data->name = $record_name;
]