私はファントムを利用して画像をキャプチャし、集中型MySQL DBにアップロードしています。PDOブロブが欠けているデータを挿入する
私が実行している問題は、一貫して試してみるすべてのファイルの終わりを切っていることです。 .pdf、.png、.docx、.xlsx ...ファイルの一部を切り捨てるので、破損することはありません。奇妙なことは、常に各ファイルから同じ量をカットすることです。
マイSQL挿入コードは次のとおりです。
$put_linkdata = $DBW->prepare('INSERT `'.$tableD.'` SET
captured = :capture_time,
error = :eYN,
link = :link,
image = :image,
html = :html,
`text` = :plaintext,
file = :file,
mimetype = :mimetype');
$put_linkdata->bindValue(':capture_time', date('Y-m-d H:i:s',$record['timestamp']));
$put_linkdata->bindValue(':link', $item['url']);
$put_linkdata->bindValue(':mimetype', $record['mimetype']);
$put_linkdata->bindParam(':eYN', $record['error'], PDO::PARAM_STR);
$put_linkdata->bindParam(':image', $record_child['image'], PDO::PARAM_LOB);
$put_linkdata->bindParam(':plaintext', $record_child['text'], PDO::PARAM_LOB);
$put_linkdata->bindParam(':html', $record_child['html'], PDO::PARAM_LOB);
$put_linkdata->bindParam(':file', $record_child['file'], PDO::PARAM_LOB);
if($put_linkdata->execute()){
$linkData_record['id'] = $DBW->lastInsertId();
print PHP_EOL.mb_strlen($record_child['image'], '8bit');
print PHP_EOL.PHP_EOL.'~~~~~~~~~~~~~~~~~~~~~~~~~~~'.PHP_EOL.PHP_EOL;
die();
}
else{
throw New Exception('Error inserting linkdata record into archive - SQL error "'.$put_linkdata->queryString.'"'.PHP_EOL.PHP_EOL.$put_linkdata->errorInfo());
}
が、私はまだ整合性を維持し、データをここでする前にテストのトン、すべてを実行した場合、およびIますfile_put_contents()それが撮影された画像やファイルと同じです。
イメージの例では、google.comを使用すると私に25Kイメージが表示されますが、アップロードは17.2Kです。 55Kのpdfが40.7Kでアップロードされています。別のpdfは1.5 MBですが、1.1 MBでアップロードします。ファイルをdb blobと比較すると、DBのblobにはファイルの最後にコンテンツがありません。
サイズと内容がファイル間で一貫していませんが、同一のキャプチャで一貫しています。
誰もが考えている?
更新 私は準備された声明とアップロードの間で何か起こったことを絞り込んだ。
また、プリペアドステートメントを使用している場合、PDOとMySQLIの両方で発生します。最初の前提は、どこかでエンコードされた文字セットが間違っていることですが、すべてがUTF8(db、table、PDO接続、設定ファイル)として定義されています。
私の推測では、BLOBはデータを保持するのに十分ではありません。 MEDIUMBLOBまたはLONGBLOBのいずれかを試してください。私は以前これに似た質問に答えました。列のタイプが小さすぎます。 –
実際にはLONGBLOB列ですが、私はMEDIUMとBLOBに変更して、PDOとBLOBのサイズと関係があるかどうかを調べてみました。 変更は機能していません。また、BLOBであっても、25Kはまだその範囲内です。 – Lilbnyfufu
blobのアップロードが終了する前に、スクリプトのタイムアウトが発生していますか? – Mazodude