0

我在画布和图像上使用 JS 做了一点尝试。它的最后一部分调用一个页面,一开始我尝试在服务器上写入最终图像。

该过程假设以前的文件存在,但不完整:

<?php
$filename = explode(".", $_POST["trans_file"]); // name of the image file
if (!unlink("transit/" . $_POST["trans_file"])) echo "File " . $_POST["trans_file"] . "not found!<br />";       // remove the partial file
$filesave = $filename[0] . ".png";              // I will save a PNG file
$filejpg = $filename[0] . ".jpg";               // but I will transform it into JPG
$data = $_POST["base64img_data"];               // here I receive the base64 image by a previous process
$data = explode(";", $data);                    // I remove the first part of it
$data = explode(",", $data[1]);                 // $data[1] now contains the base64 image complete
$image=base64_decode(chunk_split($data[1]));    // $image is now a PNG file
$handle = fopen("transit/$filesave", "wb");     // Create a PNG file
fwrite($handle, $image);                        // write it
fclose($handle);                                // Close, and transform it into JPG
    png2jpg("transit/$filesave", "transit/$filejpg", 100);
    unlink("transit/$filesave");                // remove PNG image

我把它放在页面的开头,但浏览器总是显示前一个文件,一个在开头取消的文件,它本身就是一个 JPG。

很奇怪(对我来说)这个序列在一台服务器上运行良好,而不是在另一台服务器上运行!

我想这可能是页面内PHP和JS异步执行的情况。

如何同步服务器和浏览器?谢谢你。

4

1 回答 1

0

如果一个进程写入文件并在操作过程中另一个进程删除它会发生什么?

使用.lock文件,因此只有 1 个进程尝试操作有问题的文件。

于 2013-03-05T15:13:31.070 回答