乍浪云SAE 关于部分函数不能够使用的做法

例如:file_put_contents(“test.txt”,”Hello World. Testing!”);

<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″>
<title>你写自己猜</title>
<style>
#box{

得这样写: 

width: 600px;
height: 500px;
margin: 100px auto;
background-color: orange;
border: 3px solid #cccccc;
}

file_put_contents(“saekv://test.txt”, $response, FILE_APPEND);

这么虽好了

#box nav{
width: 100%;
height: 100px;
}

Wrappers

PHP 自 4.3 版本的话,引入了 stream 流的概念,简单说,就是可为此通用的 IO
读写函数来操作各种资源,比如:tcp、udp、http、ftp
等等,这样做的好处是联合了接口的包装。这即比如在 Unix
中将各种设备都泛成文件,你得运用 read/write
来操作各种设施,这样合了操作接口,易于理解和以。Wrappers
就是之所以来报 stream 流该如何处理(读写)特定的资源。

Wrappers 使用非常简单,比如下面就是是一个顶广大一个利用 Wrapper 的说话:

<?php
$c = file_get_contents("http://sae.sina.com.cn");
?>

这里就是是利用 http:// Wrapper 实现抓取远程内容连赋值给一个变量的操作。

由新浪云的 PHP 运行条件并无提供持久性本地 IO 能力,所以 PHP
运行环境提供了供了 Memcached,Storage,KVDB 的 Wrappers
来方便开发者迁移原有程序。

倘你的原始程序中,使用了地面文件型缓存,那么您可方便地应用 saemc:// 替换本地文件缓存的前缀。

而你的固有程序中,有文件存储的需要,你本来可能是经过 NFS
或者就是单机提供的储存服务,那么你可方便地使 saestor:// 或 saekv:// 来替换原来的积存前缀,注意存储的用是用以文书落地之不可磨灭存储,任何缓存、中间临时交换数据的需求都是休适合下
Storage 和 KVDB 存储的。

<?php
# 使用"saekv://"这个 Wrapper 将配置文件 config.php 的内容以"config.php"为 key 保存到 KVDB 中,
# 然后用 include 引用了这个文件
file_put_contents('saekv://config.php','');
include 'saekv://config.php';
?>

重要

用 Wrappers 请而先期初始化相应的劳务,上例被 KVDB 服务必须是开的状态。

#box nav div{

height: 50px;
line-height: 50px;
}

#box nav .changeColor{

padding-left: 15px;
}

.changeColor input{

width: 30px;
height: 30px;
margin: 0 15px;
vertical-align: middle;
}

.clear input:first-of-type{
margin-left: 15px;
width: 100px;
height: 30px;
background-color: #ffffff;
}

.clear input:last-of-type{
margin-left: 15px;
width: 30px;
height: 30px;
background-color: #ffffff;
}

canvas{

background-color: #fff;

}
</style>
</head>
<body>
<div id=”box”>
<nav>
<div class=”changeColor”>
<input type=”button” style=”background-color:pink”>
<input type=”button” style=”background-color:purple”>
<input type=”button” style=”background-color:red”>
<input type=”button” style=”background-color:green”>
<input type=”button” style=”background-color:deepskyblue”>
</div>
<div class=”clear”>
<input type=”button” value=”清空画布” onclick=clearLayer()>
橡皮擦 <input type=”button” class=”eraser”>
</div>
</nav>
<canvas width=”600″ height=”400″></canvas>

</div>

<script>
var cvs =document.querySelector(‘canvas’);
var ctx =cvs.getContext(‘2d’);

var eraser = document.querySelector(“.eraser”);
console.log(eraser);
cvs.addEventListener(‘mousedown’,function (e) {//addEventListener()
方法用于向指定元素添加事件句柄。
var x = e.clientX-this.offsetLeft;
var y = e.clientY-this.offsetTop;

cvs.oldPoint = {
x:x-1,
y:y-1,
}
drawLine(x.y)

this.addEventListener(‘mousemove’,move);
this.addEventListener(‘mouseup’,up);

});
function move(e) {
var x = e.clientX – this.offsetLeft;
var y = e.clientY – this.offsetTop;
drawLine(x,y);

cvs.oldPoint = {
x: x,
y: y,
}

}
function up(e) {

this.removeEventListener(“mousemove”,move);
this.removeEventListener(“mouseup”,up);
}
function drawLine(x,y) {

ctx.beginPath();

ctx.lineWidth = 5;

ctx.lineJoin = “round”;

ctx.lineCap = “round”;

ctx.moveTo(cvs.oldPoint.x,cvs.oldPoint.y);

ctx.lineTo(x,y);

ctx.stroke();

ctx.closePath();
}
function clearLayer() {
ctx.clearRect(0,0,cvs.width,cvs.height);
}
var colorBtn = document.querySelectorAll(“.changeColor input”);

var colorBtnArr = [].slice.call(colorBtn);

// var colorBtnArr = Array.prototype.slice.call(colorBtn);

colorBtnArr.forEach(function (item,index) {

item.onclick = function () {

changeColor(this);
}

})

function changeColor(btn) {

ctx.strokeStyle = getComputedStyle(btn).backgroundColor;

}

eraser.onclick = function () {
ctx.strokeStyle = getComputedStyle(cvs).backgroundColor;
};
</script>
</body>
</html>

发表评论

电子邮件地址不会被公开。 必填项已用*标注