php使用加锁文件的读写方式,编程实现投票功能。运行程序后,显示当前各个项目的投票数目,在初始状态下,各个项目的票数为0。用户投票后,更新各个项目的投票数目。
时间: 2023-11-22 11:55:11 浏览: 32
以下是一个简单的 PHP 实现:
```php
<?php
// 文件名
$file = 'votes.txt';
// 检查文件是否存在,不存在则创建
if (!file_exists($file)) {
file_put_contents($file, serialize(array()));
}
// 加锁打开文件
$fp = fopen($file, 'r+');
flock($fp, LOCK_EX);
// 读取文件内容并反序列化为数组
$data = file_get_contents($file);
$votes = unserialize($data);
// 初始状态下,各个项目的票数为0
if (empty($votes)) {
$votes = array(
'Project A' => 0,
'Project B' => 0,
'Project C' => 0,
);
}
// 显示当前各个项目的投票数目
echo "Current votes:\n";
foreach ($votes as $project => $count) {
echo "$project: $count\n";
}
// 用户投票后,更新各个项目的投票数目
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$project = $_POST['project'];
if (isset($votes[$project])) {
$votes[$project]++;
}
fseek($fp, 0);
ftruncate($fp, 0);
fwrite($fp, serialize($votes));
fflush($fp);
flock($fp, LOCK_UN);
}
// 关闭文件
fclose($fp);
?>
<form method="post">
<p>Vote for:</p>
<input type="radio" name="project" value="Project A"> Project A<br>
<input type="radio" name="project" value="Project B"> Project B<br>
<input type="radio" name="project" value="Project C"> Project C<br>
<input type="submit" value="Vote">
</form>
```
上面的代码中,我们将投票的结果保存在 `votes.txt` 文件中,使用加锁方式读写文件以保证并发安全。初始状态下,各个项目的票数为0。用户投票后,更新各个项目的投票数目,并将结果保存回文件中。最后,通过 HTML 表单实现投票功能。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)