fwrite

php抽奖算法(适用于九宫格、大转盘)

拜拜、爱过 提交于 2021-02-19 11:00:09
/* * 不同概率的抽奖原理就是把0到*(比重总数)的区间分块 * 分块的依据是物品占整个的比重,再根据随机数种子来产生0-* 中的某个数 * 判断这个数是落在哪个区间上,区间对应的就是抽到的那个物品。 * 随机数理论上是概率均等的,那么相应的区间所含数的多少就体现了抽奖物品概率的不同。 */ /** * 抽奖方法 * @return [array] [抽奖情况] */ public function doDraw() { // 奖品数组 $proArr = array( // id => 奖品等级, name => 奖品名称, v => 奖品权重 array('id'=>1,'name'=>'超级奖品','v'=>0), array('id'=>2,'name'=>'特等奖','v'=>1), array('id'=>3,'name'=>'一等奖','v'=>5), array('id'=>4,'name'=>'二等奖','v'=>10), array('id'=>5,'name'=>'三等奖','v'=>12), array('id'=>6,'name'=>'四等奖','v'=>22), array('id'=>7,'name'=>'五等奖','v'=>50), array('id'=>8,'name'=>'六等奖','v'=>100), array('id'=>9,'name

Writing a new and appending a file in PHP without erasing contents

狂风中的少年 提交于 2021-02-16 18:17:06
问题 How could one write a new line to a file in php without erasing all the other contents of the file? <?php if(isset($_POST['songName'])){ $newLine = "\n"; $songName = $_POST['songName']; $filename = fopen('song_name.txt', "wb"); fwrite($filename, $songName.$newLine); fclose($filename); }; ?> This is what the file looks like Current view This is what is should look like Ideal View 回答1: Simply: file_put_contents($filename,$songName.$newLine,FILE_APPEND); Takes care of opening, writing to, and

浅谈 Linux IO

梦想与她 提交于 2021-01-31 23:21:27
来源于:360云计算 1 前言 linux IO是文件存储的基础。本文参考了网上博主的一些文章,主要总结了linuxIO的基础知识。 2 linux IO栈 linux文件IO采用分层的设计。分层有两个好处: 架构清晰; 功能解耦; linux文件IO的时候,从通用性和性能的角度考虑,采用了一个折中的方案来满足我们日常写磁盘。 例如: void foo() { char *buf = malloc(MAX_SIZE); strncpy(buf, src, MAX_SIZE); fwrite(buf, MAX_SIZE, 1, fp); fclose(fp); } 上面代码的说明如下: malloc的buf对应图中的application buffer。调用fwrite之后,操作系统将数据从application buffer拷贝到libc buffer,即c库标准IO buffer。fwrite 返回后,数据还保存在libc buffer,如果这个时候进程退出,这些数据将会丢失,没有写到磁盘上。 当调用fclose的时候,fclose只会刷新libc buffer到page cache,如果确保数据写到磁盘,kernel buffer也必须flush。例如使用sync,fsync。 除了fclose方法外,还有一个主动刷新接口fflush函数

fread isnt reading an updated value despite the file has been changed by another program

眉间皱痕 提交于 2021-01-27 16:40:06
问题 There are two programs that are working with my special file at the same time. They have a common beginning: #define TASK_POSITION 0x0100 #include <stdio.h> #include <stdlib.h> #include <inttypes.h> int main() { FILE * control_file; unsigned int task_code; fpos_t task_position; control_file = fopen("/home/anonymous/.control", "r+"); fseek(control_file, TASK_POSITION, SEEK_SET); fgetpos(control_file, &task_position); But later they have a very different code 1st program could change a value at

MySQL锁机制和PHP锁机制

a 夏天 提交于 2021-01-19 07:59:01
MYSQL中的锁: 语法 : LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE .................. 【锁表】 UNLOCK TABLES 【释放表】 Read:读锁|共享锁 : 所有的客户端只能读这个表不能写这个表 Write:写锁|排它锁: 所有当前锁定客户端可以操作这个表,其他客户端只能阻塞 注意:在锁表的过程中只能操作被锁定的表,如果要操作其他表,必须把所有要操作的表都锁定起来! 应用场景: 1. 高并发下单时,减库存量时要加锁 2. 高并发抢单、抢票时要使用 error_reporting (0 ); mysql_connect ('localhost','root','admin123' ); mysql_select_db ('test' ); # mysql 锁 mysql_query ('LOCK TABLE a WRITE'); // 只有一个客户端可以锁定表,其他客户端阻塞在这 $rs = mysql_query ('SELECT id FROM a' ); $id = mysql_result ( $rs , 0, 0 ); if ( $id > 0 ) { -- $id ; mysql_query ('UPDATE a SET id='. $id ); } # mysql 解锁 mysql_query (

C语言文件读写操作

北城以北 提交于 2021-01-13 15:17:26
前言 上一章节主要讲解结构体内存对齐问题, 本章节主要讲解C语言文件操作,全面解析C语言文件操作。 C语言文件 通常,文件用于在计算机中存储用户数据。换句话说,计算机使用文件存储数据。我们可以如下定义: 文件是存储在辅助存储器(如计算机的haddisk)中的数据的集合。 C语言支持两种类型的文件,它们如下: 文本文件(或)ASCII文件 二进制文件 文本文件(或)ASCII文件 包含数字,字母和符号等数据的ASCII码的文件称为文本文件(或)ASCII文件。 二进制文件 含字节(0和1)形式的数据的文件称为二进制文件。通常二进制文件是文本文件的编译版本。 C语言文件操作 以下是用C语言编写的文件上执行的操作. 创建(或)打开文件 从文件读取数据 将数据写入文件 关闭文件 以上所有操作都是使用C语言中可用的文件处理功能执行的。我们将讨论文件处理功能。 打开文件 要创建新文件或打开现有文件,我们需要创建FILE类型的文件指针。以下是用于创建文件指针的示例代码 FILE *f_ptr ; 我们使用预定义的方法 fopen() 创建新文件或打开现有文件。可以使用不同的模式打开文件。考虑以下代码: FILE *f_ptr ; f_ptr = fopen("abc.txt", "w") ; 上面的示例代码创建一个名为 abc.txt 的新文件(如果该文件不存在),否则将以写入模式打开

二、linux IO 编程---系统调用和POSIX标准和标准IO

青春壹個敷衍的年華 提交于 2021-01-04 08:37:01
2.1 系统调用 2.1.1 概念   所谓系统调用(system call)是指曹错系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务。    应用程序可以直接调用系统调用获得内核的服务 shell 可以调用系统调用 标准C库,也可以调用系统调用,获得内核服务   2.1.2 linux 进程的运行状态   当应用程序进行系统调用的时候,进程运行状态会发生变化,进程会从运行态变为内核态,当调用完成后,则从内核态变为运行态。 内核态:进程运行在内核空间 运行态:进程运行在用户空间 2.2 UNIX 标准 ISO C IEEE POSIX 在 linxu 中用户编程接口(API)遵循了在 UNIX 中最流行的应用编程界面标准——POSIX 标准。这些系统调用编程接口主要通过C库(libc)实现的。 2.3 标准IO   文件操作标准I/O库函数:   fopen、fread、fwrite、fclose、fflush、fseek、fgetc、getc、getchar、fputc、putc、putchar、fgets、gets、printf、fprintf、sprintf、scanf、fscanf、sscanf、fgetops、fsetops、ftell、rewind、freopen、setvbuf、remove、fileno

php使用shmop函数创建共享内存减少负载

回眸只為那壹抹淺笑 提交于 2020-12-26 11:54:39
PHP做内存共享有两套接口。一个是shm,它实际上是变量共享,会把对象变量序列化后再储存。使用起来倒是挺方便,但是序列化存储对于效率优先的内存访问操作而言就没啥意义了。另外一个是shmop,它是Linux和Windows通用的,不过功能上比shm弱了一些,在 Linux 上,这些函数直接是通过调用 shm* 系列的函数实现,而 Winodows 上也通过对系统函数的封装实现了同样的调用。 要创建共享内存段需要使用函数shmop,那么前提需要开启扩展。 shmop主要函数 shmop_open (创建或打开共享内存块)、shmop_write (向共享内存块中写入数据)、shmop_read (从共享内存块中读取数据)、shmop_size (获取共享内存块的大小)、shmop_close (关闭共享内存块)、shmop_delete (删除共享内存块) <?php //创建一块共享内存 $shm_key = 0x4337b101; $shm_id = @shmop_open($shm_key, 'c', 0644, 1024); //读取并写入数据 $data = shmop_read($shm_id, 0, 1024); shmop_write($shm_id, json_encode($data), 0); $size = shmop_size($shm_id); /

linux多线程下的fwrite和write使用详解

ぃ、小莉子 提交于 2020-12-11 23:59:25
Linux下的文件操作,有人喜欢用C库的文件流操作,有人喜欢用Linux的原生的系统调用。一般来说,C库的文件操作会更高效一些,因为C库自己做了文件缓存的处理。今天,主要研究多线程下的fwrite与write,每个线程都对相同的FILE*或者fd进行写操作,看看结果是否为预期行为。 第一种情况:使用C库的fwrite,其线程的实现如下: 第二种情况:使用系统调用write,其线程的实现如下: 下面看主线程的实现: 其中LOOPS定义为1000000。也就是说,线程1~3分别写入"aaaaaa\n",“bbbbbb\n”,和"cccccc\n"各一百万次。如果写入文件的操作是“线程安全”的,那么最终的文件行数应该是3百万行,且每行只可能是"aaaaaa"、“bbbbbb”、和"cccccc"的一种。 【文章福利】需要C/C++ Linux服务器架构师学习资料加群812855908(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等) 接下来看测试结果: 1、定义了宏USE_CLIB,即使用C库的fwrite,其结果如下: 2、注释掉红USE_CLIB,即直接使用系统调用write,其结果如下:

php实现TXT小说章节解析、小说章节在线阅读

ε祈祈猫儿з 提交于 2020-12-08 08:31:26
每天学习一点点 编程PDF电子书、视频教程免费下载: http://www.shitanlife.com/code 要实现TXT文本章节的解析,大概思路是在每个章节加入了特定的字符,然后根据字符的起始位置读取章节。这里我写了一个小说阅读项目,也是根据这个思路进行。 实现步骤:     1. 解析TXT文件,生成章节内容 1. 编辑TXT文件,在每个章节名称加入我自己定义的一个字符串,用以识别。 2.识别章节,获取到章节列表 3.根据自定义的字符串,循环读取每个章节的内容,并生成每个章节的TXT文件 2.获取章节列表,实现获取章节内容接口 1. 章节列表接口 2. 章节内容接口 源码: 1.解析TXT文件,生成章节内容 1 <? php 2 header ("content-type:text/html;charset=utf-8" ); 3 4 $artName = $_GET ["artname" ]; 5 6 if (! $artName ){ 7 echo "文件名没有哦"; exit (); 8 } 9 10 $fromFileName = "../". $artName .".txt" ; 11 if (! file_exists ( $fromFileName )){ 12 echo "源文件不存在啊"; exit (); 13 } 14 15 $distDirName