首 页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 尾 页

nginx源代码理解及详细注释

发布者: PHPYuan | 发布时间:2018-07-02

nginx-1.9.2代码理解及详细注释

说明:

nginx的以下功能模块的相关代码已经阅读,并对其源码及相关数据结构进行了详细备注,主要参考书籍为淘宝陶辉先生 的《深入理解Nginx:模块开发与架构解析》,并对书中没有讲到的相关部分功能进行了扩展,通过边阅读边调试的方法 通读了以下功能模块,并对其进行了详细的注释,同时加了自己的理解在里面,注释比较详细,由于是周末和下班时间阅读,再加上自己 文采限制,代码及数据结构注释都比较白话,注释中肯定会有理解错误的地方。

阅读工具source insight,如果中文乱码,按照source insight configure目录中说明操作

阅读过程

截止15.9.19,已经分析并注释完成的主要功能如下:

.配置编译过程中相关脚本调用过程详细注释

.用户自由模块编译添加过程

.nginx使用的进程间通信方式(包括共享内存 原子操作 自旋锁 信号 信号两 文件锁 互斥锁 channel通信)

.nginx自定义高级数据结构详解(队列 链表 红黑树 散列表等)

.配置文件解析流程

.nginx启动、退出过程分析

.连接池 内存池分配管理过程

.对客户端链接如何实现负载均衡,“惊群”问题避免

<

想读更多 ->

nginx提示找不到nginx.pid或丢失nginx.pid怎么办

发布者: PHPYuan | 发布时间:2018-07-02

大家好我是冰峰,继续小技术。

遇到提示无法找到nginx.pid无法重启或启动nginx进程的时候怎么办?

用这个办法解决:nginx -c /path/to/config/file

命令如下:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

想读更多 ->

Web站点架构的深入浅出,由表及里(一)

发布者: PHPYuan | 发布时间:2018-07-02

1.1 http反向代理服务器

在web站点前端,我们需要搭建一个反向代理服务器,用于负责接受用户的请求,请求包括动态和静态的内容请求。一般反向代理服务器的部署方案有HAProxy和Nginx,这里将使用HAProxy来描述。

注解:HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

Web站点架构的深入浅出,由表及里(一)

http反向代理服务器

1.2 http代理服务器高可用

为了提高系统安全及高可用性,我们需要在前端的http反向代理服务器配置高可用,解决方案有HAProxy+K

想读更多 ->

Redis Cluster原理

发布者: PHPYuan | 发布时间:2018-07-02

一、CLUSTER MEET 命令的实现

通过向节点 A 发送 CLUSTER MEET 命令,客户端可以让接收命令的节点 A 将另一个节点 B 添加到节点 A 当前所在的集群里面:

CLUSTER MEET <ip> <port>

收到命令的节点 A 将与节点 B 进行握手(handshake),以此来确认彼此的存在,并为将来的进一步通信打好基础:

1)节点 A 会为节点 B 创建一个 clusterNode 结构,并将该结构添加到自己的 clusterState.nodes 字典里面。

2)之后,节点 A 将根据 CLUSTER MEET 命令给定的 IP 地址和端口号,向节点 B 发送一条 MEET 消息。

3)如果一切顺利,节点 B 将接收到节点 A 发送的 MEET 消息,节点 B 会为节点 A 创建一个 clusterNode 结构,并将该结构添加到自己的 clusterState.nodes 字典里面。

4)之后,节点 B 将向节点 A 返回一条 PONG 消息。

5)如果一切顺利,节点 A 将收到节点 B 返回的 PONG 消息,通过这条 PONG 消息节点 A 可以知道节点 B 已经成功地接收到了自己发送的 MEET 消息。

想读更多 ->

PHP 删除数组中的元素

发布者: PHPYuan | 发布时间:2018-07-02

PHP 删除数组中的元素有多种方式,以下列举几种常用的方式。

删除数据中的一个元素

如果你想删除数组中的一个元素,你可以使用 unset() 或 array_splice() 方法。

如果你知道数组元素的值(value),但不知道键(key),你可以使用 array_search() 来获取键(key)。

unset() 方法

注意如果你使用 unset() 方法,它是不会改变其他的键(key),如果你想对其他的键(key)重新整理排序,可以使用 array_values()。

<?php$array = array(0 => "a", 1 => "b", 2 => "c");unset($array[1]); //↑ 你要删除的数组元素值的键print_r($array);?>

输出结果:

Array ( [0] => a [2] => c)

array_splice() 方法

如果你使用 array_splice() 方法,数组的键会自动重新建立索引, 但对关联性的数组不起作用,需要使用 array_values() 将键转换为数字键。

<?php$array = array(0 => "a", 1 =>

想读更多 ->

怎么理解程序中的变量?php语言中变量有哪些特点?

发布者: PHPYuan | 发布时间:2018-07-01

怎么理解程序中的变量?

程序中的变量源于数学,在程序语言中能够储存结果或者表示抽象概念。简单理解变量是临时存储值的容器,它可以储存数字、文本、和一些复杂的数据(比如说字符串、复杂的排列组合等),变量在php语言中居于核心地位,是使用php的关键所在,变量的值在程序运行中会随时发生变化,能够把程序中准备使用的一段数据起一个简短容易记得名字,另外还可以保存用户输入数据和特点运算的结果,总结变量是变量是用于跟踪几乎所有类型信息的简单工具。

怎么理解程序中的变量?php语言中变量有哪些特点?

php教程

php语言中的变量

php数据存储单元是变量和常量存储各种类型的数据,php是一种弱类型的语言,使用变量前不用声明变量,赋值时就是创建了变量,这个原因使的php语法和c语言、java(强类型语言)有很大的不同。

php变量的声明和特点

在php声明变量必须使用一个美元符号“$”后面跟变量名表示,然后再使用赋值操作(=)给一个

想读更多 ->

如何用Eclipse 调试PHP代码

发布者: PHPYuan | 发布时间:2018-07-01

如何用Eclipse 调试PHP代码

Eclipse是很多Java程序员喜爱的一款免费的IDE。PHP也是网络上很多程序员相关段子的最爱。

本文Jerry介绍一种最简单的使用Eclipse调试PHP代码的办法。

1. 百度上搜索服务器WAMPServer,下载安装。

如何用Eclipse 调试PHP代码

服务器默认的监听端口号是80。我们把它改成其他端口号吧。

看见下面的菜单了么?选择二级菜单最下面的httpd.conf, 这个是服务器的配置文件。

php中字符串数据类型有什么特点?它有哪些定义方法?

php字符串

可以使用单引号、双引号、定界符三种方法定义字符串但他们使用功能上有很大的区别:

1、单引号定义字符串方法

用一个单引号(‘’)把字符串包含在内就行,单引号包括的内容不能再出现单引号,如果有单引号出现就会出现错误。如果必须要出现单引号需要用转义符号(反斜杠\),如果字符串内容中出现反斜杠需要加两个反斜杠进行转义,另外单引号字符串中出现变量不会被变量值替代。

让个人网站也可以免费使用SSL,附申请过程和使用方法

进入后,我们点击申请证书后,选择免费版DVSSL进行申请(如下图)

想读更多 ->

mysql索引利弊分析

发布者: PHPYuan | 发布时间:2018-07-02

索引的利弊与如何判定,是否需要索引

相信读者都知道索引能够极大地提高数据检索的效率,让Query 执行得更快,但是可能并不是每一位朋友都清楚索引在极大提高检索效率的同时,也给数据库带来了一些负面的影响。下面就分别对 MySQL 中索引的利与弊做一个简单的分析。

索引的好处

索引带来的益处可能很多读者会认为只是"能够提高数据检索的效率,降低数据库的IO成本"。

确实,在数据库中表的某个字段创建索引,所带来的最大益处就是将该字段作为检索条件时可以极大地提高检索效率,加快检索时间,降低检索过程中须要读 取的数据量。但是索引带来的收益只是提高表数据的检索效率吗?当然不是,索引还有一个非常重要的用途,那就是降低数据的排序成本。

我们知 道,每个索引中的数据都是按照索引键键值进行排序后存放的,所以,当Query 语句中包含排序分组操作时,如果排序字段和索引键字段刚好一致,MySQL Query Optimizer 就会告诉 mysqld 在取得数据后不用排序了,因为根据索引取得的数据已经满足客户的排序要求。

那如果是分组操作呢?分组操作没办法直接利用索引完成。但是分组操作是须要先进行排序然后分组的,所以当Query 语句中包含分组操作,而且分组字段也刚好和索引键字段一致,那么mysq

想读更多 ->