标签: fwrite

为什么 PHP 脚本不能通过命令行或任务调度程序在 server 2008 上写入文件?

我在 serverfault.com 上创建了一个问题,建议我在这里提问。

https://serverfault.com/questions/140669/why-cant-php-script-write-a-file-on-server-2008-via-command-line-or-task-schedul

我有一个 PHP 脚本。当我使用浏览器时,它运行良好。它在同一目录中写入一个 XML 文件。该脚本需要大约 60 秒才能运行,生成的 XML 文件大约为 16 MB。

我在 Windows Server Web edition SP1 64 位上通过 FastCGI 运行 PHP 5.2.13。

该代码从 SQL 服务器中提取库存,运行一个循环来为第三方构建一个 XML 文件。

我在任务调度程序中创建了一个任务来运行 c:\php5\php.exe "D:\inetpub\tools\build.php"

任务调度程序显示大约一分钟的时间流逝,这是脚本在浏览器中运行所需的时间。

没有返回错误,但没有创建文件。

每次更改计划任务属性时,都会出现一个用户密码框,然后我输入管理员帐户密码。

如果我在命令行运行相同的路径和参数,它不会出错,也不会创建文件。

当我以管理员身份右键单击运行命令提示符时,仍未创建该文件。我在文件创建之后得到了我的 echo 语句“文件已发布”,并且没有返回错误。

我正在做一个简单的 fopen fwrite fclose 来将 php 变量的内容保存到 .xml 文件中,并且只有在通过浏览器运行脚本时才会创建该文件。

下面是 xml-building 循环之后发生的事情:

$feedContent .= "</feed>";

sqlsrv_close( $conn );

echo "<p>feed built</p>";

$feedFile = "feed.xml";

$handler = fopen($feedFile, 'w');

fwrite( $handler, $feedContent );

fclose( $handler );

echo "<p>file published</p>"; …
Run Code Online (Sandbox Code Playgroud)

php fastcgi scheduled-tasks fwrite

2
推荐指数
1
解决办法
1352
查看次数

连续两次 fwrites 操作

我在写模式下打开了一个文件,如下所示:

int a = 10;
char b = 'm';
int y = 0;
char z;

FILE *fp = NULL;
fp = fopen("/config/gps_backup.dat","w");
Run Code Online (Sandbox Code Playgroud)

我正在对文件执行两个变量的 frwite(第一个是整数,第二个是字符),如下所示:

fwrite(&a,1,sizeof(int),fp);
fwrite(&b,1,sizeof(char),fp);
Run Code Online (Sandbox Code Playgroud)
  1. 两个连续的 fwrite 操作会不会互相覆盖
  2. 如果没有,两个连续的 fread 操作是否可以正确填充到我的变量中

例如:

fread(&y,1,sizeof(int),fp);
fread(&z,1,sizeof(char),fp);
Run Code Online (Sandbox Code Playgroud)

如果连续 fread 操作完成,y 和 z 变量是否可以保存 10 和 'm' 的值。

c fwrite fread

2
推荐指数
1
解决办法
2105
查看次数

检查返回值 fread 和 fwrite

#include <stdio.h>\n#include <stdlib.h>\n\nint main(int argc, char *argv[]){\n\n  if(argc != 3){\n    printf("Usage: ./copy filename newfile\\n");\n    exit(1);\n  }\n\n  int bytes;\n  long file_size, file_copied_size;\n  FILE *file_to_copy, *new_file;\n\n  if((file_to_copy = fopen(argv[1], "rb")) == NULL){\n    printf("File cannot be opened - read\\n");\n    exit(1);\n  }\n  if((new_file = fopen(argv[2], "wb")) == NULL){\n    printf("File cannot be opened - write\\n");\n    exit(1);\n  }\n\n  fseek(file_to_copy, 0, SEEK_END);\n  file_size = ftell(file_to_copy);\n  rewind(file_to_copy);\n\n  char *buffer = malloc(1024 * 1024); /* Imposto un buffer di 1MB per maggiore efficienza */ \n  if(!buffer){\n    printf("Errore allocazione memoria\\n");\n …
Run Code Online (Sandbox Code Playgroud)

c return-value fwrite fread

2
推荐指数
1
解决办法
2万
查看次数

使用 py2app “编译”python 后,open()/f.write() 不起作用

使用py2app转换.py.app. 起初,它看起来不错,但是当我执行open()f.write(如下所示)创建一个文件时.txt,它不会创建该文件。

f = open(name + ".txt", "w")
f.write("users inputs here")
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,这工作得非常好.py

任何人有任何想法,我似乎找不到任何可以解释为什么会发生这种情况的东西。

python file-io tkinter fwrite py2app

2
推荐指数
1
解决办法
1212
查看次数

C 以二进制模式读/写文件

我创建了一个包含 4000 个块的文件,块大小为 4096 字节。现在我想操作单个块并再次读取它们而不更改文件的大小。实际上我想将另一个文件中的块写入我创建的文件中的特定块。因此,我以二进制模式打开文件,如下所示:

FILE * storeFile=fopen(targetFile, "wb");  // this one I created before
FILE * sourceFILE=fopen(sourceFile,"rb");
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试将内容读取到指针

char * ptr=malloc(4096);
...
for(i=0; i<blocks_needed; i++)
{
    fread(ptr,4096,1,sourceFile);
    // now I am going to the position of the blocks I want to write to
    fseek(storeFile,freeBlocks[i]*4096,SEEK_SET);
    // and now I am writing it to the File I created before
    fwrite(ptr,4096,1,storeFile);
...
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我之前创建的文件改变了它的大小,并成为我想要写入其中的文件的副本。

我究竟做错了什么?

先感谢您!

c fopen fseek fwrite fread

2
推荐指数
1
解决办法
4万
查看次数

fwrite 创建一个比输入文件大的输出文件

我想按字节将文件读入数组,然后将数组的数据反转写入新文件中(程序通过命令行参数获取文件名)。用 txt 文件尝试过,它有效,但如果我在 jpg 文件上尝试,新文件比原始文件大!确定的文件大小以long size保存;对于 jpg 文件来说也是正确的,并且写入循环获取大小时间执行写入一个字符(字符是一个字节大,我是对的?)。有谁知道输出文件如何变得大于 size*byte?

对我来说这似乎不符合逻辑!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc,char* argv[])
{

 FILE *file;
 char *buffer;
 long size;
 char filename[32];

 if(argc>1)
 {
  //determine file size
  file=fopen(argv[1],"r");
  fseek(file,0,SEEK_END);
  size=ftell(file);
  rewind(file);
  if(size>33554432) //32MB
  {
   fclose(file);
   return 0;
  }

  //create buffer and read file content
  buffer=malloc(33554432);
  fread(buffer,1,size,file);
  fclose(file);

  //create new file name and write new file
  strcpy(filename,argv[1]);
  strcat(filename,"_");
  file=fopen(filename,"w");
  {
   long i;
   for(i=size-1;i>=0;i--)
   {
    fputc(buffer[i],file);
   }
  }
  fclose(file);
  free(buffer);

 }
 return 0; …
Run Code Online (Sandbox Code Playgroud)

c binaryfiles fwrite

2
推荐指数
1
解决办法
1732
查看次数

fseek($file, SEEK_END) + fwrite() 写入文件开头而不是结尾

我正在尝试将一个字符串附加到一个包含 json 字符串的文件中。为此,我必须删除最后一个括号“]”,并将新字符串附加到文件末尾。这就是我尝试这样做的方式:

$fh = fopen($target_file, 'r+') or die("can't open file");  // opens file
$stat = fstat($fh);                                         // get data from statt struct
ftruncate($fh, $stat['size']-1);                            // remove last char
fseek($fh, SEEK_END);                                       // move file pointer to end
fwrite($fh, $append_str);                                   // write new string
fclose($fh);                                                // close
Run Code Online (Sandbox Code Playgroud)

但是, $append_str 被写入文件的开头。附加操作的工作应该有什么不同?(ps:使用wamp服务器)

php io json fwrite

2
推荐指数
1
解决办法
2722
查看次数

在 Swift Playground 中写入文件时出错

不知道为什么我在这里收到错误。我按照说明在文档中创建了文件夹“共享游乐场数据”。有没有人有任何见解?

import PlaygroundSupport
import Foundation

var fileName = "Csv.csv"
var csvText = "Date,Task,Time Started,Time Ended\n"
fileName.append(csvText)

let fileUrl = playgroundSharedDataDirectory.appendingPathComponent(fileName)
do {
try fileName.write(to: fileUrl, atomically: true, encoding: .utf8)
} catch {print("error")}
Run Code Online (Sandbox Code Playgroud)

csv fwrite swift swift-playground

2
推荐指数
1
解决办法
1552
查看次数

为什么 fwrite / fread 不像 56.806201550387598?

我正在尝试将结构保存到文件中,然后在另一个程序中再次读取它。我以前从未遇到过此问题,但至少据我所知,我从未尝试将带有值的双变量写入56.806201550387598文件。并不是说我不知道​​为什么这个数字会产生任何问题,但是每当我尝试将包含该值的结构写入文件时,该字段及其后声明的任何字段都只能从该结构中读出初始化值宣言。

#include <fstream>
#include <iostream>
#include <string> 

using namespace std;

typedef struct statsSet{
    int pathCount = 0;
    double vMinMean = 0;
    int imgsFound = 0;
    int minWidth = INT_MAX;
    int maxWidth = 0; 
}statsSet;

void wrightToFile(statsSet sSet){
    FILE* of = fopen ("imgStats2.dat", "w"); 
    fwrite (&sSet, sizeof(statsSet), 1, of); 
    fclose (of);
}
statsSet readFromFile(){
    statsSet statReadIn;
    FILE *ifl = fopen ("imgStats2.dat" , "r");
    fread(&statReadIn, sizeof(statsSet), 1, ifl);
    fclose (ifl);
    return statReadIn;
}
void pr(statsSet statReadIn){   
    cout << "pathCount: " …
Run Code Online (Sandbox Code Playgroud)

c++ fwrite fread mingw-w64

2
推荐指数
1
解决办法
80
查看次数

在文件段中写入零

我用来fwrite写一个文件(它是一个图像)。

首先,我正在编写一个具有固定大小的标题

int num_meta_write_bytes = fwrite(headerBuffer, 1, headerSize, file);
Run Code Online (Sandbox Code Playgroud)

这工作正常

然后我必须写像素:

num_write_bytes = fwrite(data_pointer, 1, image_size, file);
Run Code Online (Sandbox Code Playgroud)

这工作正常

对于我的情况,我必须在标题和像素之间写入可变数量的零,我发现的(丑陋的?)解决方案是:

for (size_t i = 0; i < padding_zeros; i++) //padding_zeros is calculated in runtime
{
    uint8_t zero = 0;
    num_meta_write_bytes += fwrite(&zero, 1, sizeof(uint8_t), fp);
}
Run Code Online (Sandbox Code Playgroud)

(此代码放置在写入像素之前)

我的问题是:有没有办法直接告诉fwrite连续写入相同的值padding_zeros次数?而不是使用这个for循环?

c fwrite zero-padding

2
推荐指数
1
解决办法
345
查看次数